我遇到一种情况,我想替换许多文件中的特定字符串
替换字符串AAA用另一个字符串血脑屏障但是有很多以 AAA 开头或以 AAA 结尾的字符串,我只想替换第 34 行上的一个字符串,并保持其他字符串不变。
是否可以通过行号指定,在所有文件中,该字符串恰好位于第 34 行。
答案1
您可以在 sed 中指定行号,在 awk 中指定 NR(记录数)。
awk 'NR==34 { sub("AAA", "BBB") }'
如果要在命令行上指定多个文件,请使用 FNR(文件编号记录)。
awk 'FNR==34 { sub("AAA", "BBB") }'
或者
sed '34s/AAA/BBB/'
使用 sed 进行就地替换
sed -i '34s/AAA/BBB/' file_name
答案2
假设您要替换 file_record 中的第三行:
sed -i "s/`head -3 file_record | tail -1 `/replaced/" file_record