使用awk从文件中提取特定行

时间:2013-05-14 23:41:24

标签: file awk line

文件中的数据:

...
... 
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

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:1)

快速而肮脏:

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

因此在oneline上输出,没有尾随空格。

答案 1 :(得分:1)

我用

output=$(awk '$NF=="letters" {$NF="";print}' file)
echo $output   # without double quotes

答案 2 :(得分:1)

好吧,你可以搜索字母,删除最后一个字段,然后将该行的其余部分连接成一个变量A,然后在最后输出该变量。

#!/usr/bin/awk -f
/letters/ {$NF="";A=A $0}
END{print A}

它不会删除任何复制。但你没有要求这样做。