今天我花了一天时间尝试做以下事情。
假设我有一个 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"