我看到awk可识别转义序列识别输入的转义序列
$ awk 'BEGIN {print "foo\nbar"}'
foo
bar
然而,它没有输入
$ awk '{print $1}' <<< 'hello\nworld'
hello\nworld
是否可以作出承认逃避输入序列?
我看到awk可识别转义序列识别输入的转义序列
$ awk 'BEGIN {print "foo\nbar"}'
foo
bar
然而,它没有输入
$ awk '{print $1}' <<< 'hello\nworld'
hello\nworld
是否可以作出承认逃避输入序列?
这适用于变量以及
$ set 'hello\nworld'
$ printf %b "$1" | awk '{print $1}'
hello
world
您正在使用的字符串不会将换行符转义序列扩展为实际的换行符。试试这个:
`echo -e "hello\nworld" | awk '{print $1}'`
或者:
awk '{print $1}' <<< "hello
world"
是的,这就是为什么我认为你的答案不能“识别转义序列”。转义序列的要点是允许产生任何序列。 (正如我所说的,用awk,C语言,Python语言,或者bash的$'...'形式来尝试。) – rici
@StevenPenny你的问题是'能否识别输入中的转义序列? '如何使用'awk's'来修改输入来回答你的问题?可能是我解释你的问题错了? –
在一般情况下,您想要正确处理任意长度的反斜杠。 ''\\“'应该被解释为一个文字反斜杠,''\\\”\ t \ r \ n“'应该是反斜线,双引号,制表符,回车符,换行符。我不认为这可能是在Awk中得到了优雅和地道的解决,但是当然,一个蛮力的实现在技术上并不困难,只是单调乏味。 – tripleee