如何替换文本文件中某一行内的特定字符串

如何替换文本文件中某一行内的特定字符串
$ cat text.txt
my name is Steven
my age is 10
i like dogs

什么命令比较合适,echo "Kate"可以替换Stevenon text.txt

答案1

如果必须与 一起使用echo "Kate",请使用awk

echo "Kate" | awk 'NR==FNR{a=$0;next} sub("Steven", a, $0)1' - file
  • 标准输入Kate来自echo "Kate",通过管道传输至awk
  • awk然后读取标准输入 ( -)。NR==FNR当第一个文件正在处理(stdin)时,条件为真。该变量a被设置为该值。
  • file然后处理的输入并sub()替换Steven为 的值a
  • thesub()1是语句中的模式,无论是否发生替换,都将始终返回 true。没有任何动作,相当于{ print },所以每一行都是替换后打印的。

但是,更好的方法是使用sed,只需:

sed 's/Steven/Kate/' file

如果您想在文件中进行适当的更改,请使用

sed -i 's/Steven/Kate/' file

相关内容