使用 sed 指令將特定行上的字串變更為特定字串

使用 sed 指令將特定行上的字串變更為特定字串

如果檔案中包含名為“test”的字串,我需要使用 sed 僅在第四行更改檔案中的字串

所以基本上我現在得到的是:

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

這基本上會瀏覽各行,看看它是否有測試,然後將 abc 更改為 zz(如果它在該行中)。

但我該如何只針對第四行?

我試過

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

在 s 前面添加 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

相關內容