关于sed的多个命令的问题

关于sed的多个命令的问题

sed -e 'script' -e 'script'相同的sed "script;script"

此外,这些多个命令是否在一次文件扫描期间运行?或者您放置的脚本越多,它对文件执行的扫描/传递次数就越多? (每个脚本一个)

由于 sed 是一种脚本语言,我倾向于多重传递理论...例如,如果您有sed "script;script"这样的脚本,就像有这样的 sed 脚本:

script
script

因此,很自然地假设一切都是按程序发生的。

但又如何呢-e 'script' -e 'script'

最重要的是,有没有一种方法可以告诉 sed 仅执行一次,从而在大文件上节省宝贵的 CPU 周期?如果 sed 不能做到这一点,还有其他方法可以做这样的事情吗? (也许 awk 更合适?等等)

感谢您抽出时间提供帮助

答案1

  • 对于每一行输入,每个表达式/脚本都会依次应用到它。命令

    sed -e 's/apple/orange/g' -e 's/orange/red/g'
    

    将替换所有出现的字符串apple orange与字符串red

  • 只有一趟通过输入数据。sed处理流,它是一个流编辑器毕竟,输入流甚至不必是可查找的。

你举的例子,

sed -e "script1" -e "script2"

是相同的

sed "script1;script2"

这与以下相同

sed -f file1 -f file2

其中file1containsscript1file2contains script2,这与

sed -f file

其中file包含

script1
script2

或者

script1;script2

是否sed适合您的任务完全取决于任务。就像 一样sedawk不需要多次解析文件或输入流。有些任务更适合awk,尤其是那些需要聚合数据的任务。

sed是一个编辑器,awk相比之下更多的是一种文本处理语言。

相关内容