我试图理解为什么下面的命令不起作用(输出为空):
echo 'aaa\tbbb' | awk -F '\\t' '{print $2}'
我希望输出为'bbb'。
有趣的是,这有效(输出是'bbb'):
echo 'aaa\tbbb' | awk -F 't' '{print $2}'
这也有效(ouptut是'tbbb'):
echo 'aaa\tbbb' | awk -F '\\' '{print $2}'
看起来好像'\\ t'被读作“反斜杠后跟制表符”而不是“转义反斜杠后跟t”。我知道有一些解决方法可以获得正确的结果(例如echo aaa \ tbbb | sed s / \ t / \ | / g | awk -F'|''{print $ 2}')但有没有正确的方法来写这个命令?
答案 0 :(得分:2)
您需要告诉echo
解释反斜杠转义。尝试:
$ echo -e 'aaa\tbbb' | awk -F '\t' '{print $2}'
bbb
man echo
会说:
-e enable interpretation of backslash escapes