sed コマンドを使用して、特定の行の文字列を特定の文字列に変更します。

sed コマンドを使用して、特定の行の文字列を特定の文字列に変更します。

ファイルに「test」という文字列が含まれている場合は、sedを使用してファイルの4行目でのみ文字列を変更する必要があります。

基本的に私が今得るものは次のとおりです。

sed '/test/ s/abc/zz/g' sample

これはデフォルトで行を調べてテストがあることを確認し、その行に存在する場合はabcをzzに変更します。

しかし、どのようにして4行目だけをターゲティングできますか?

頑張った

 sed '/test/ 4s/abc/zz/g' sample

■ 前に 4 を追加しても機能しません。

答え1

一方通行:

sed -e '4 {
  /test/s/abc/zz/g
}' <file

答え2

よく分からないけど、こんなのがうまくいくでしょうか?

awk 'NR==4 {print $0}' filename.txt | grep 'test' | sed 's/abc/xyz/g'

答え3

他の方法:

まず、「test」という文字列を含む行を探します。

LINE=$(grep "テスト"ファイル -n | awk '{print $1}' | cut -d ':' -f1 | xargs)

次に、LINE変数を使用して次の操作を行います。

sed "s$LINEs/abc/zzz/g" ファイル

答え4

あなたはこれを使うことができます

sed -i '4s/old_text/new_text/g' file_name

関連情報