逃避awk中的反斜杠

时间:2013-07-31 13:03:43

标签: bash awk backslash

我试图理解为什么下面的命令不起作用(输出为空):

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}')但有没有正确的方法来写这个命令?

1 个答案:

答案 0 :(得分:2)

您需要告诉echo解释反斜杠转义。尝试:

$ echo -e 'aaa\tbbb' | awk -F '\t' '{print $2}'
bbb

man echo会说:

   -e     enable interpretation of backslash escapes