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
awk -F: '/^[^#]/ { print $2 }' /etc/oratab | uniq
/^[^#]/
は、最初の文字が#
ではないすべての行に一致します。 [^
は、「次の(または閉じる:)前の文字が]
でないことを意味します。
最初の2つのコロンの間の部分だけが必要なので、-F:' makes
awksplit the line at colons, and
print $ 2`は2番目の部分を出力します。
Grepを使用する:grep -vE "^#"
またはgrep -E "^[^#]"
next
awkステートメントは現在の行をスキップします。これは、スクリプト内の複数のブロックを一致させる必要がある場合に役立ちます。
awk '
/^#/ {next}
/ pattern 1 / { }
/ pattern 2 / { } ' filename