根据行号替换字符串


50

我有一种情况想要替换许多文件中的特定字符串

用另一个字符串BBB替换一个字符串AAA,但是有很多以AAA开头或以AAA结尾的字符串,我只想在第34行替换一个,并保持其他字符串不变。

是否可以通过行号指定,在所有文件上,此字符串恰好位于第34行。

Answers:


82

您可以在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

-3

让我们假设您要替换file_record中的第三行:

sed -i "s/`head -3 file_record | tail -1 `/replaced/" file_record

在头和-1之后使用反引号...在这里不接受
RAMAN

1
这只是行不通的。它需要一些重型转义。如果第三行在其他地方重复怎么办?
Sparhawk
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.