sed -eコマンドで複数のオプションを結合する方法は?

sed -eコマンドで複数のオプションを結合する方法は?

私は今日次のことをしようとした日を過ごしました。

Fortranコードファイルがあるとしましょう。

このファイルのすべての内容を小文字に変更したいと思います。ただし、行が特定の文字または単語で始まる場合は、その行を変更しないでください。

たとえば、次のコマンドは

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

私が望むように動作し、コメント(「!」で始まる行)を省略し、すべてを小文字に変更します。

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

「#include」という単語で始まる行を省略してください。

Q:これら2つのコマンドを1つにまとめるにはどうすればよいですか?

したがって、デフォルトでは、最初の条件に「または」を追加する必要があります。いくつかのオプションを試しましたが、運がありませんでした。何か簡単なはずだと思います。

答え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"

関連情報