$ cat text.txt
my name is Steven
my age is 10
i like dogs
什么命令比较合适,echo "Kate"
可以替换Steven
on 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
。- the
sub()1
是语句中的模式,无论是否发生替换,都将始终返回 true。没有任何动作,相当于{ print }
,所以每一行都是替换后打印的。
但是,更好的方法是使用sed
,只需:
sed 's/Steven/Kate/' file
如果您想在文件中进行适当的更改,请使用
sed -i 's/Steven/Kate/' file