sed+无需使用cat命令

4
以下语法目标是在匹配“name1 + name2 + name3”的第一个字符串上添加“_name4”,并用新词替换旧词。
cat  file | sed  '/name1 + name2 + name3/s/[^ ]*\>/&_name4/'  | sed s'/old/new/g' > new_file

我的问题是:不使用cat命令是否有可能做到同样的事情?


是的,sed 命令可以愉快地接受文件名作为命令行参数。您还可以使用 -e 链接多个 sed 命令:sed -e '...' -e '...' -e '...' filename - galaxywatcher
参数-i会覆盖当前文件并在同一文件夹中创建一个备份,不显示屏幕输出。 - ghaschel
sed -i -e "命令" -e "另一个命令" 文件 - ghaschel
2个回答

8

你很少需要使用cat命令。你可以像这样操作:

sed '/name1 + name2 + name3/s/[^ ]*\>/&_name4/' file | sed 's/old/new/g' > new_file

您还可以组合使用sed命令:

sed '/name1 + name2 + name3/s/[^ ]*\>/&_name4/;s/old/new/g' file > new_file

2

sed file -e <expr> or sed <expr> file


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接