나는 오늘 다음과 같은 일을 하려고 하루를 보냈습니다.
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"