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/#.*//'
这会消除注释,即使它们不是从第一列开始。