Awk-字段分隔符行为

Awk-字段分隔符行为,awk,Awk,我有一个文件: CreateSec,explorer.exe,\\WINDOWS\\system32\\verclsid.exe,SUCCESS 我想打印“$2” 示例1 它运行良好: $ awk -F '\\\\\\\\' '{print $2}' file WINDOWS $ awk -F '\\\\'+ '{print $2}' file WINDOWS $ echo "CreateSec,explorer.exe,\\WINDOWS\\system32\\verclsid.exe,

我有一个文件:

CreateSec,explorer.exe,\\WINDOWS\\system32\\verclsid.exe,SUCCESS
我想打印“$2”

示例1

它运行良好:

$ awk -F '\\\\\\\\' '{print $2}' file
WINDOWS
$ awk -F '\\\\'+ '{print $2}' file
WINDOWS
$ 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
示例2

它运行良好:

$ awk -F '\\\\\\\\' '{print $2}' file
WINDOWS
$ awk -F '\\\\'+ '{print $2}' file
WINDOWS
$ 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
示例3

不打印

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

因此,它运行良好:

$ awk -F '\\\\\\\\' '{print $2}' file
WINDOWS
$ awk -F '\\\\'+ '{print $2}' file
WINDOWS
$ 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
问题:

  • 为什么3个示例不起作用
  • 如何正确保存3个示例
  • 两者的区别是什么

    a)
    awk-F'.

    b)
    awk-F”


  • 感谢您的解释。

    关于(3)-四个反斜杠是区别:

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

    谢谢您的解释。我知道我可以将示例3保存如下-->
    awk-F“{print$2}”文件