web-dev-qa-db-ja.com

行を無視する方法は#で始まります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
6
ABUL KASHIM
awk -F: '/^[^#]/ { print $2 }' /etc/oratab | uniq

/^[^#]/は、最初の文字が#ではないすべての行に一致します。 [^は、「次の(または閉じる:)前の文字が]でないことを意味します。

最初の2つのコロンの間の部分だけが必要なので、-F:' makesawksplit the line at colons, andprint $ 2`は2番目の部分を出力します。

10
Hauke Laging

Grepを使用する:
grep -vE "^#"またはgrep -E "^[^#]"

8
Albert

next awkステートメントは現在の行をスキップします。これは、スクリプト内の複数のブロックを一致させる必要がある場合に役立ちます。

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