awk:警告:转义序列`\]'视为普通`]'

use*_*663 6 awk

echo "A:\ B:\ C:\ D:\" | awk -F'[:\]' '{print $1}'
Run Code Online (Sandbox Code Playgroud)

输出:

awk: warning: escape sequence `\]' treated as plain `]'

A
Run Code Online (Sandbox Code Playgroud)

我收到上面的警告信息,我已经尝试了多个选项来逃避]但是没有解决.

我想用这两个分隔符:\和打印完全字母A,B,C,D通过印刷$1,$2,$3,$4分别.

Ed *_*ton 9

我想这就是你要做的事情:

$ echo 'A:\ B:\ C:\ D:\' | awk -F':\\\\[[:space:]]*' '{print $2}'
B
Run Code Online (Sandbox Code Playgroud)

请注意,我添加,[[:space:]]*因为我认为您不希望之后的字段中的前导空格$1.

您的FS设置中使用的字符串文字会被解析两次,一次是在读取脚本时再次执行,因此转义需要加倍(google和/或阅读awk手册页或书).在这种情况下,第一次传递\\\\转换为\\和第二次传递\\转换为\你想要的.