文件中的数据:
...
...
a b c d letters
f g h i letters
j k letters
...
...
使用,
awk '/letters/' file
结果是:
a b c d letters
f g h i letters
j k letters
但是我想得到以下结果(没有制表符和“字母”字,单行会更好):
a b c d e f g h i j k
我怎样才能做到这一点?
又快又脏:
awk '$NF=="letters"{sub($NF,"");s=s $0}END{sub(/ *$/,"",s);print s}' file
用你的例子:
kent$ echo "...
...
a b c d letters
f g h i letters
j k letters
...
..."|awk '$NF=="letters"{sub($NF,"");s=s $0}END{sub(/ *$/,"",s);print s}'
a b c d f g h i j k
所以单行输出,没有尾随空格。
我会用
output=$(awk '$NF=="letters" {$NF="";print}' file)
echo $output # without double quotes
好吧,您可以搜索字母,删除最后一个字段,并将该行的其余部分连接成一个变量 A,然后在最后打印该变量。
#!/usr/bin/awk -f
/letters/ {$NF="";A=A $0}
END{print A}
它不会删除任何复制。但你没有要求那个。