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

/^[^#]/最初の文字以外のすべての#行を一致させる[^ことは、「次の文字(または終わり)の前に文字がない」を意味します]

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

答え2

grepの使用:
grep -vE "^#"またはgrep -E "^[^#]"

答え3

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

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

答え4

sed 's/#.*//'

これにより、最初の列で始まらなくてもコメントが削除されます。

関連情報