![如何组合 sed -e 命令中的多个选项?](https://linux22.com/image/181996/%E5%A6%82%E4%BD%95%E7%BB%84%E5%90%88%20sed%20-e%20%E5%91%BD%E4%BB%A4%E4%B8%AD%E7%9A%84%E5%A4%9A%E4%B8%AA%E9%80%89%E9%A1%B9%EF%BC%9F.png)
今天我花了一天时间尝试做以下事情。
假设我有一个 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"