如果檔案中包含名為“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