不足している単語を含むファイルに行を追加する

不足している単語を含むファイルに行を追加する

xyz.txt次の3行を含むファイルがあります。

I am ok.
I am fine.
all good.

amその行を含まない行を見つけて前の行に追加する必要があります。

与えられた例では、必要な出力は次のとおりです。

I am ok.
I am fine. all good.

そして、スクリプトは大容量ファイルでも機能するはずです。たとえば、ファイルに10行があり、3行と7行に「am」がない場合は、3行を2行に追加し、7行を6行に追加する必要があります。

ベストアンサー1

アッ解決策(単語境界演算子awkにGNUまたはbusyboxが使用されていると仮定):\<\>

拡張サンプルfile

I am ok.
I am fine.
all good.
am I sleeping?
how's that
I am sure
about that
and think on.
For that I am now

awk '{ printf "%s%s",(NR==1? "": (!/\<am\>/? OFS:ORS)),$0 }END{ print "" }' file
  • "%s%s"- 2つの仕様の形式文字列です。 1つ目は、%s潜在的な項目「先行」区切り記号です。
    • 最初のレコード()の場合は(空の文字列)NR==1です。""
    • 単語を含まないレコードの場合am- OFS(出力フィールド区切り文字、つまりスペース)
    • am- という単語を含むレコードの場合ORS(基本改行文字である出力レコード区切り記号)

出力:

I am ok.
I am fine. all good.
am I sleeping? how's that
I am sure about that and think on.
For that I am now

おすすめ記事