【问题标题】:extract specific line from a file using awk使用 awk 从文件中提取特定行
【发布时间】:2013-05-09 09:40:04
【问题描述】:

文件中的数据:

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

我怎样才能做到这一点?

【问题讨论】:

  • 你将如何识别线条?行上是否有一些识别标记(例如每行上都会有单词字母?)

标签: file awk line


【解决方案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

所以在一行中输出,没有尾随空格。

【讨论】:

    【解决方案2】:

    我会使用

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

    【讨论】:

      【解决方案3】:

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

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

      它不会删除任何复制。但你没有要求那个。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-13
        • 1970-01-01
        • 1970-01-01
        • 2014-11-05
        • 1970-01-01
        • 2019-03-11
        • 1970-01-01
        相关资源
        最近更新 更多