ファイルマッチパターンで行を見つけて置き換える

ファイルマッチパターンで行を見つけて置き換える

私はここで私の人生を単純化しようとしていますが、詰まっています。複数行を含むファイルがあります。各行にはユーザーと番号があります。ユーザーを検索して番号を変更するbashステートメントを知りたいです。これがどのように可能ですか?よろしくお願いします。

私のファイル構造は次のとおりです。

crmopr 162756
tpiopr 102334
ddnope 210928

- 解決済み -

この一文がその仕事をします。

sed -i '/MATCHING_STRING/s/MATCHING_NUMBER/NEW_NUMBER/1' file

MATCHING_STRING: 数値を変更する行を検索するために使用される文字列

MATCHING_NUMBER:置き換える番号

NEW_NUMBER:新しい番号

/ 1:行の最初の代替一致のみを変更します(この場合は/ gかもしれません)。

-i:変更を永久に適用する

- 編集する -

OPを編集して数秒後に承認されたソリューションも機能します!

ベストアンサー1

ファイルが次の場合:

abcd 1234
djhd 6534
fytf 4544

次のようにAWK one-linerを実行できます。

index=2;for i in `cat filename`; do echo $i; done|awk -v OFS=" " -v \
INDEX=$index '$1 ~ /^abcd$/ {$2="1233"; print }' >> NewFile.txt

これは名前と一致し、にdddd置き換えられます。その後、出力が 。12341233NewFile.txt

したがって、NewFileには置き換えられた項目が含まれます。すべてのファイル項目を繰り返すようにプログラムできます。

おすすめ記事