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分别.
我想这就是你要做的事情:
$ echo 'A:\ B:\ C:\ D:\' | awk -F':\\\\[[:space:]]*' '{print $2}'
B
Run Code Online (Sandbox Code Playgroud)
请注意,我添加,[[:space:]]*因为我认为您不希望之后的字段中的前导空格$1.
您的FS设置中使用的字符串文字会被解析两次,一次是在读取脚本时再次执行,因此转义需要加倍(google和/或阅读awk手册页或书).在这种情况下,第一次传递\\\\转换为\\和第二次传递\\转换为\你想要的.