ファイル内の特定の行にテキストを追加するためにどのUNIXコマンドを使用できますか?

StackOverflow https://stackoverflow.com/questions/602921

  •  03-07-2019
  •  | 
  •  

質問

誰かがファイルの特定の行の最後にテキストを追加できる一連のUNIXコマンドを知っていますか?

eg

行1

行2

行3

行4

テキスト&quot ;, extra information"を追加したいこれで、ファイルは次のようになります。

行1

行2

3行目、追加情報

行4

役に立ちましたか?

解決

Perl:

perl -p -e's{\n}{, extra information\n} if $. ==3' myfile

$。は行番号です

他のヒント

awkの場合:

awk '{s=
sed -e '3s/$/, Extra Information/' -i myfile
; if( NR==3 ){ s=s ", Extra Information" } print s;}' myfile > newfile

適切なsedバージョン:

<*>

ポータブルな sed を使用したバージョンです(-iオプションなし):

sed '3s/$/Hello World/' myfile

myfile は変更されないため、起こりうる間違いから回復できます。

awk 'NR == 3 { print 
somecommand > oldfile.tmp && mv oldfile.tmp oldfile
", extra information" } NR != 3' myfile

中括弧の前の部分は条件です:3行目にある場合は、テキストを追加します。中括弧が省略されている場合、デフォルトのアクションは $ 0 を出力するだけです。必要に応じて、新しいファイルにリダイレクトするか、別のプログラムにパイプします。読んでいるのと同じファイルにリダイレクトすることはできません。一般的な回避策は、新しいファイルにリダイレクトし、コマンドが成功した場合に移動することです:

<*>
sed -e "s/^Line 3/\0, extra info/" -i text.txt

追加情報を1行だけに追加する場合は、sed / awkのいずれかのワンライナーが実行します。

ファイルの(ほぼ)すべての行に何かを追加する場合は、各行の追加情報を含む2番目のファイルを作成し、 paste

を使用する必要があります
$ cat myfile
line 1
line 2
line 3
line 4
$ cat extra 
something

something else
$ paste myfile extra
line 1  something
line 2
line 3  something else
line 4
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top