1

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

例えば

ライン1

2行目

3号線

4号線

ファイルが次のようになるように、テキスト「、追加情報」を3行目に追加したいと思います。

ライン1

2行目

3 行目、追加情報

4号線

4

6 に答える 6

8

awk では次のようになります。

awk '{s=$0; if( NR==3 ){ s=s ", Extra Information" } print s;}' myfile > newfile

適切な sed バージョン:

sed -e '3s/$/, Extra Information/' -i myfile
于 2009-03-02T16:25:38.623 に答える
5

これは、ポータブルのバージョンですsed(-i オプションなし):

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

myfile修正されていないことに注意してください。

于 2009-03-02T16:20:19.010 に答える
4
awk 'NR == 3 { print $0 ", extra information" } NR != 3' myfile

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

somecommand > oldfile.tmp && mv oldfile.tmp oldfile
于 2009-03-02T16:26:34.720 に答える
2
sed -e "s/^Line 3/\0, extra info/" -i text.txt
于 2009-03-02T16:23:01.700 に答える
2

パール:

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

$. は行番号です

于 2009-03-02T16:32:15.500 に答える
1

追加情報を 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
于 2009-03-02T17:09:20.310 に答える