0

特定の出現を置き換えるUNIXコマンド/ Perlスクリプトを知っている人はいますか

私のファイルはhello.txtです

 number         555
 number         555
 number         555

ここで、2 番目のオカレンスを 666 に置き換えたいと思います。

私はこのコマンドを試しています

perl -n -i -e "s/number\\s+555/number 666/g" hello.txt'

それはすべての出来事を変えています。

ワンライナーは本当に役に立ちます。

4

4 に答える 4

1

$.現在のファイルハンドルの行番号を保持し、次のような特定の入力ファイルに使用できます

perl -i -pe 's/number\s+555/number 666/ if $. == 2' hello.txt

または、number一部をドロップアウトできる場合は、

perl -i -pe 's/555/666/ if $. == 2' hello.txt
于 2013-10-09T06:16:58.107 に答える
0

ファイル hello.txt の内容を配列に読み取り、結合して $str を取得しました。ここでは、2 番目のオカレンスを 0 に初期化された i に置き換えます。この検索を試して、1 つのライナーで置き換えます。

 $str =~ s/(number\s+555)/ ++$i==2 ? "number 666": $1/gse;
于 2013-10-09T05:28:02.077 に答える
0

Does anyone know any unix commands:awkこのタスクには適していると思います ( http://www.grymoire.com/Unix/Awk.html )。

awk '{if (NR == 2) {gsub("555", "666", $0);} print $0; } ' hello.txt
于 2013-10-09T05:29:16.840 に答える