grep/awk를 사용하여 #으로 시작하는 줄을 무시하는 방법

grep/awk를 사용하여 #으로 시작하는 줄을 무시하는 방법
cat /etc/oratab
#test1:/opt/oracle/app/oracle/product/11.2.0.4:N
+ASM2:/grid/oracle/app/oracle/product/11.2.0.4:N         # line added by Agent
test2:/opt/oracle/app/oracle/product/11.2.0.4:N          # line added by Agent
test3:/opt/oracle/app/oracle/product/11.2.0.4:N          # line added by Agent

oracle@node1 [/home/oracle]
cat /etc/oratab | grep -v "agent" | awk -F: '{print $2 }' | awk NF | uniq

awk NF는 출력에서 ​​빈 줄을 생략하는 것입니다.

#으로 시작하는 줄만 무시하면 됩니다. 예상 출력:

/grid/oracle/app/oracle/product/11.2.0.4
/opt/oracle/app/oracle/product/11.2.0.4

답변1

awk -F: '/^[^#]/ { print $2 }' /etc/oratab | uniq

/^[^#]/첫 번째 문자가 아닌 #모든 줄을 일치시키는 [^것은 "다음 문자(또는 끝) 앞에 문자가 없음"을 의미합니다 ].

처음 두 콜론 사이의 부분만 필요하므로 -F:' makesawk split the line at colons, andprint $2`는 두 번째 부분을 인쇄합니다.

답변2

grep 사용:
grep -vE "^#"또는grep -E "^[^#]"

답변3

awk 문은 next현재 줄을 건너뛰는데, 이는 스크립트에서 여러 블록을 일치시켜야 하는 경우 유용합니다.

awk '
/^#/ {next}
/ pattern 1 / {    }
/ pattern 2 / {    } '  filename 

답변4

sed 's/#.*//'

이렇게 하면 첫 번째 열에서 시작하지 않더라도 주석이 제거됩니다.

관련 정보