前の行に「|」を含まない行を追加します。

前の行に「|」を含まない行を追加します。

次の形式のデータを含むテキストファイルがあります。

1|0|this is test file line1
2|1|this is test file line2
3|1|this
is
test
file line4

含まない行は、含める|前の行に追加する必要があります。|

出力:

1|0|this is test file line1
2|1|this is test file line2
3|1|this is test file line4

ベストアンサー1

1つの方法は、awkを使用して次のアルゴリズムを実装することです。

  • 前の行の追跡prev
  • 行にが含まれていて|最初の行ではない場合は、印刷してくださいprev。その後、現在の行prev
  • 行に含まれていない場合は、|次に追加します。prev
  • スクリプトの最後に印刷prev

たとえば、

awk '/\|/ { if (NR > 1) print prev; prev=$0 }
     !/\|/ { prev = prev $0 }
     END { print prev }' input

おすすめ記事