ファイルの途中で改行を削除する方法は?

ファイルの途中で改行を削除する方法は?

ファイル構造:

Col1|Col2|Col3|Col4
123|456|abcdefg
Tel.: 689346589934, xyz
lckhasfkl|abc

「col3」から改行文字を削除したい。提案してください

ベストアンサー1

$ sed -e :1 -e '/|.*|.*|/!{N;b1' -e '}' -e 's/\n/ /g' < your-file
Col1|Col2|Col3|Col4
123|456|abcdefg Tel.: 689346589934, xyz lckhasfkl|abc

またはawk均等に:

awk -F '|' '{while (NF<4) {getline more; $0 = $0 " " more};print}' < your-file

両方得る|次の行を入力して行に追加し、行に少なくとも3文字(4つのフィールド)が含まれていない限り、スペースを追加します。

他のフィールド(4番目のフィールドを除く、そうでなければ新しいレコードが始まる場所が不明)に改行文字を含めることができ、3番目のフィールドの改行文字のみを置き換えたい場合:

sed '
 :1
 /|.*|.*|/!{
   N;b1
 }
 :2
 s/\n\([^|]*|[^|]*$\)/ \1/
 t2' < your-file

または:

awk -F '|' -v OFS='|' '
  {
    while (NF < 4) {getline more; $0 = $0 "\n" more}
    gsub("\n", " ", $3)
    print
  }' < your-file

おすすめ記事