1

我有一个文件:

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. 有什么区别?:

    一种)awk -F '\\\\\\\\'

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

谢谢你的解释。

4

1 回答 1

3

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

  • 在单引号内,没有元字符,因此 shell 将 8 个反斜杠传递给awk.
  • 在双引号内,反斜杠转义后面的字符,因此 shell 将 4 个反斜杠传递给awk.
于 2012-11-28T16:24:55.700 回答