![sed -e 명령에서 여러 옵션을 결합하는 방법은 무엇입니까?](https://linux55.com/image/181996/sed%20-e%20%EB%AA%85%EB%A0%B9%EC%97%90%EC%84%9C%20%EC%97%AC%EB%9F%AC%20%EC%98%B5%EC%85%98%EC%9D%84%20%EA%B2%B0%ED%95%A9%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.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"