内容source.txt
:
gold green white black blue
yellow magenta brown
tram kilo charlie tango
嗨,大家好!我需要解决一个谜。
我正在尝试运行一个小的脚本来grep一个文件source.txt
,通过管道grep
输出sed
替换字符串并将该行存储在新文件中pol.txt
grep -l "gold" source.txt | xargs sed 's/green/red/' > pol.txt
而不是将唯一的行存储在pol.txt
:
gold red white black blue
我拥有整个文件本身,并替换了字符串
gold red white black blue
yellow magenta brown
tram kilo charlie tango
当我-l
从grep命令中删除该选项时,我有这个,而pol.txt中当然没有任何内容
sed: can't read gold: No such file or directory
sed: can't read green: No such file or directory
sed: can't read white: No such file or directory
sed: can't read black: No such file or directory
sed: can't read blue: No such file or directory
grep
需要作为测试人员,但不幸的是“如果”不是一个选择。
以选择包含任何线gold
从的Source.txt和替换的第一次出现green
与red
:
$ sed -n '/gold/{s/green/red/; p}' source.txt
gold red white black blue
要将其保存在文件中:
sed -n '/gold/{s/green/red/; p}' source.txt >pol.txt
-n
告诉sed除非我们明确要求,否则不要打印行。
/gold/
选择与正则表达式匹配的行gold
。
s/green/red/
执行替代
p
印刷。
具有相同的逻辑:
$ awk '/gold/{gsub(/green/, "red"); print}' source.txt
gold red white black blue
如果由于尚未说明的原因而被迫使用grep管道,请尝试:
$ grep -l --null "gold" source.txt | xargs -0 sed -n '/gold/s/green/red/p'
gold red white black blue
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句