根据行号替换字符串

根据行号替换字符串

我遇到一种情况,我想替换许多文件中的特定字符串

替换字符串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

相关内容