Awk - 字段分隔符行为

时间:2012-11-28 16:13:20

标签: awk

我有一个文件:

CreateSec,explorer.exe,\\WINDOWS\\system32\\verclsid.exe,SUCCESS

我想打印“$ 2”

示例1

效果很好:

$ awk -F '\\\\\\\\' '{print $2}' file
WINDOWS

示例2

效果很好:

$ awk -F '\\\\'+ '{print $2}' file
WINDOWS

示例3

不打印。

$ awk -F "\\\\\\\\" '{print $2}' file
.

示例4

所以效果很好:

$ echo "CreateSec,explorer.exe,\\WINDOWS\\system32\\verclsid.exe,SUCCESS" | awk -F '\' '{print $2}'
WINDOWS
----------------------------------------------------------------------------------

$ echo "CreateSec,explorer.exe,\\WINDOWS\\system32\\verclsid.exe,SUCCESS" | awk -F "\\" '{print $2}'
WINDOWS

问题:

  1. 为什么3个例子不起作用?
  2. 如何正确保存3个示例?
  3. ?:

    之间有什么区别?

    a)awk -F '\\\\\\\\'

    b)awk -F "\\\\\\\\"

  4. 感谢您的解释。

1 个答案:

答案 0 :(得分:3)

关于(3) - 四个反斜杠是不同的:

  • 在单引号内,没有元字符,因此shell将8个反斜杠传递给awk
  • 在双引号内,反斜杠转义后续字符,因此shell将4个反斜杠传递给awk