4

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

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

但是,从输入来看,它没有

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

可以让它从输入中识别转义序列吗?

4

3 回答 3

3

你需要做这样的事情 -

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

bash(1)

于 2013-06-04T02:12:51.370 回答
0

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

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

或者:

awk '{print $1}' <<< "hello
world"
于 2013-06-04T02:03:22.787 回答
0

这也适用于变量

$ set 'hello\nworld'

$ printf %b "$1" | awk '{print $1}'
hello
world
于 2013-06-04T03:19:04.207 回答