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"

관련 정보