0

ファイル内のデータ:

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

どうすればこれを達成できますか?

4

3 に答える 3

1

私は使うだろう

output=$(awk '$NF=="letters" {$NF="";print}' file)
echo $output   # without double quotes
于 2013-05-15T00:59:29.830 に答える
1

quick and dirty:

awk '$NF=="letters"{sub($NF,"");s=s $0}END{sub(/ *$/,"",s);print s}' file

with your example:

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

so output in oneline, without trailing spaces.

于 2013-05-15T00:20:00.120 に答える
1

文字を検索し、最後のフィールドを削除し、残りの行を単一の変数 A に連結して、その変数を最後に出力できます。

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

レプリケーションは削除されません。しかし、あなたはそれを求めませんでした。

于 2013-05-15T17:06:24.857 に答える