我有一个文件,写着‘名字’,看起来像这样
first middle last userid
Brian Duke Willy willybd
...每当我使用以下代码时
line=`grep "willybd" /dir/names`
name=`echo $line | cut -f1-3 -d' '`
echo $name它输出以下内容:
Brian Duke Willy willybd
Brian Duke Willy我的问题是,如果不先打印我剪切的原始行,如何让它只打印"Brian Duke Willy“?
发布于 2012-10-05 08:02:56
做这类事情的通常方法是:
awk '/willybd/{ print $1, $2, $3 }' /dir/names或者更具体地说,
awk '$4 ~ /willybd/ { print $1, $2, $3 }' /dir/names或
awk '$4 == "willybd" { print $1, $2, $3 }' /dir/names发布于 2012-10-05 07:20:24
grep "willybd" /dir/names | cut "-d " -f1-3剪切的默认分隔符是制表符,而不是空格。
发布于 2012-10-05 07:19:01
除非需要中间变量,否则可以使用
grep "willybd" /dir/names | cut -f1-3 -d' 'linux的一个漂亮特性是,大多数命令都可以用作过滤器:它们从stdin读取并写入stdout,这意味着您可以将一个命令的输出“输送”到下一个命令。这就是|角色所做的事情。发音是pipe。
https://stackoverflow.com/questions/12737356
复制相似问题