识别输入转义序列

时间:2013-06-04 01:55:00

标签: bash awk

我看到awk可以识别转义序列

$ awk 'BEGIN {print "foo\nbar"}'
foo
bar

但是,从输入中它不是

$ awk '{print $1}' <<< 'hello\nworld'
hello\nworld

是否可以从输入中识别转义序列?

3 个答案:

答案 0 :(得分:3)

你需要做这样的事情 -

[jaypal:~/temp] awk '{print $1}' <<< $'hello\nworld'
hello
world

bash(1)

答案 1 :(得分:0)

您正在使用的here-string不会将换行转义序列扩展为实际换行符。试试这个:

`echo -e "hello\nworld" | awk '{print $1}'`

或者:

awk '{print $1}' <<< "hello
world"

答案 2 :(得分:0)

这也适用于变量

$ set 'hello\nworld'

$ printf %b "$1" | awk '{print $1}'
hello
world