如何使用 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/#.*//'

这会消除注释,即使它们不是从第一列开始。

相关内容