NO_IDを含むデータファイルのすべての行を見つけて、「確認済み」文字列を「確認保留中」に置き換える必要があります。
私はこれを試しました:
sed '/NO_ID/, s/confirmed/to be confirmed/' stats.txt
これはうまくいかないようです。
答え1
カンマを削除してください。初期正規表現はs
後続のコマンドの「アドレス」として機能します(ここに示されているアドレスとコマンドの間のスペースはオプションです)。
sed '/NO_ID/ s/confirmed/to be confirmed/' stats.txt
confirmed
コマンドの正規表現に一致する単語に単語を置き換えると、さらに短縮できます。s
sed '/NO_ID/ s/confirmed/to be &/' stats.txt
to be confirmed
含まれている行が変更されていないことを確認する必要がある場合:
sed '/NO_ID/ { /to be confirmed/!s/confirmed/to be &/; }' stats.txt
または、
sed -e '/to be confirmed/b' -e '/NO_ID/ s/confirmed/to be &/' stats.txt
ここで、最初のコマンドは最初に含まれている行を検出し、NO_ID
その行にto be confirmed
。 2番目のコマンドは含まれている行を検出してスキップしますto be confirmed
(b
コマンドはスクリプトの最後に移動し、追加の変更なしでその行が印刷されるようにします)。含まれていない行はto be confirmed
元のコマンドと同じように変更されます。
答え2
このように:
sed '/NO_ID/ s/confirmed/to be confirmed/' stats.txt
# ^
ここにカンマはありません