ファイル内の特定の行にテキストを追加するためにどのUNIXコマンドを使用できますか?
質問
誰かがファイルの特定の行の最後にテキストを追加できる一連の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
所属していません StackOverflow