具有正斜杠的awk搜索模式作为补充括号表达式

时间:2015-02-02 13:05:01

标签: regex awk

考虑以下数据:

# comments
files-with-relative-paths1
   files-with-relative-paths2
/files-with-absolute-paths1
   /files-with-absolute-paths2

我想只使用相对路径匹配文件名的行,即使用/不能使用前导awk(可以存在前导空格)。我尝试过以下命令:

$ awk '/^\s*[^/]/' testfile.txt
# comments
files-with-relative-paths1
   files-with-relative-paths2
   /files-with-absolute-paths2

$ awk '/^[^#]\s*[^/]/' testfile.txt
files-with-relative-paths1
   files-with-relative-paths2
/files-with-absolute-paths1
   /files-with-absolute-paths2

正如您所见,他们没有给出正确的结果

3 个答案:

答案 0 :(得分:0)

我没有注意到!中的awk标记,这使得它变得更加容易:

awk '!/(^#)|(^\s*[/])/' testfile.txt

documentation没有为标准模式澄清这一点。

答案 1 :(得分:0)

如果你使用perl是好的:

perl -lne 'print unless(/^\s*\//)' your_file

答案 2 :(得分:0)

假设您的文件名都不能以#开头:

$ awk '$1 ~ /^[^#/]/' file
files-with-relative-paths1
   files-with-relative-paths2
相关问题