如何组合 sed -e 命令中的多个选项?

如何组合 sed -e 命令中的多个选项?

今天我花了一天时间尝试做以下事情。

假设我有一个 Fortran 代码文件。

我想将此文件中的所有内容更改为小写。但如果一行以特定字符或单词开头,则不应更改该行。

例如,以下命令

sed -i -e '/^!/! s/\(.*\)/\L\1/' $filein

做我想要的,它确实将所有内容更改为小写,省略注释(以“!”开头的行)或

sed -i -e '/^#include/! s/\(.*\)/\L\1/' $filein

省略以“#include”单词开头的行。

问题:如何将这两个命令合二为一?

所以基本上我需要在第一个条件下添加“或”。我尝试过多种选择,但没有任何运气。我想这应该是一些简单的事情。

答案1

您可以使用或\|

给定一个文件:

!FOO
BAR
BAZ
# COMMENT

命令

sed -e '/^!\|^#/!s/\(.*\)/\L\1/' $filein

输出

!FOO
bar
baz
# COMMENT

答案2

去做

sed -i -e "$exp1" "$file"
sed -i -e "$exp2" "$file"

你可以做

sed -i -e "$exp1" -e "$exp2" "$file"

相关内容