Unix - ファイル内のすべての行にテキストを追加する方法(ヘッダー行/最初の行を除く)

Unix - ファイル内のすべての行にテキストを追加する方法(ヘッダー行/最初の行を除く)

次のデータを含むabc.txtファイルがあります(実際のデータには約200個のレコードがたくさんあります)。

目名前
1 |
品質
3 |

今、私のファイルが次のように見えるようにテキストを追加するにはどうすればよいですか?

スノー|名前|場所
1|ジャック|パリ
2|質|パリ
3|6月|パリ

グローバル置換を試みましたが、最初の行に別のテキストを追加する必要があります。だから私を助けてください。

答え1

これには3つのオプションがあります。

  • awkとその変形(gawkなどmawk):

    awk '{if(NR==1){print $0,"| Place"} else{print $0,"| Paris"}}' file.txt
    
  • 真珠:

    perl -lne '$.==1 ? print "$_ | Place" : print "$_ | Paris"' file.txt
    
  • sed

    sed '1 s/$/ | Place/; 1! s/$/ | Paris/' file.txt 
    

答え2

スクリプト化された「内部」ファイルの編集には、以下を使用しますex

printf '%s\n' '1s/$/ | Place/' '2,$s/$/ | Paris/' x | ex abc.txt
  • printfにコマンドを発行しますex
  • 1s最初の行でのみ交換を実行してください。
  • 2,$s他のすべての行に対して交換を実行します。
  • x保存と終了。

$正規表現は「行末」を意味します。

関連情報