使用awk时包含#(注释行)

时间:2015-05-12 20:28:03

标签: regex bash shell awk scripting

所以我有一个文件说abc的内容:

 Post=76.34.34
 Pull=56.76.34
 # In case you're not a regular user then post 76.34.36/37,
 # change the value to (1.1.1,)
 Number=506442

我需要使用每一行来创建一个awk命令,以便在其他地方进行比较。

所以我正在使用

awk '/Post=76.34.34/ && /Pull=56.76.34/ && /# In case you're not a regular user then post 76.34.36/37,/ && /# change the value to (1.1.1,)/ && /Number=506442/' /File/ToBe/Compared

这里的问题是因为#而来。对于#,'等字符(>),如何继续?需要使用此awk命令来比较这些行,然后在文件中匹配它。

在这种情况下需要知道如何包含#,.

1 个答案:

答案 0 :(得分:0)

模式或字符串中的

#不应导致任何问题:

$ echo "# hello" | awk '/^#/ { print $2 }'
hello

单引号更令人痛苦,因为我们通常用单引号括起我们的awk内联命令。不同的人有不同的处理方式。

  

使用\x27

$ echo "you're welcome" | awk '/you\x27re/ { print $2 }'
welcome
  

将awk脚本放在文件中

$ cat foo.awk
/you're/ { print $2 }

$ echo "you're welcome" | awk -f foo.awk
welcome
  

使用双引号括起内联脚本并根据需要进行转义(我会保留此方法仅适用于最琐碎的情况,或者可能永远不会。)

$ echo "you're welcome" | awk "/you're/ { print \$2 }"
welcome