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:' makes
awk split the line at colons, and
print $2`는 두 번째 부분을 인쇄합니다.
답변2
grep 사용:
grep -vE "^#"
또는grep -E "^[^#]"
답변3
awk 문은 next
현재 줄을 건너뛰는데, 이는 스크립트에서 여러 블록을 일치시켜야 하는 경우 유용합니다.
awk '
/^#/ {next}
/ pattern 1 / { }
/ pattern 2 / { } ' filename
답변4
sed 's/#.*//'
이렇게 하면 첫 번째 열에서 시작하지 않더라도 주석이 제거됩니다.