AWK解释示例

Ted*_*345 2 awk gawk

我有一个文件:

AWK question about the example
Run Code Online (Sandbox Code Playgroud)

这个命令效果很好:

awk  '{ gsub(/...../, "&\n" ) ; print}' file
AWK q
uesti
on ab
out t
he ex
ample
Run Code Online (Sandbox Code Playgroud)

为什么这个命令不会打印相同的结果?

awk  '{ gsub(/.{5}/, "&\n" ) ; print}' file
AWK question about the example
Run Code Online (Sandbox Code Playgroud)

为什么这个命令不会打印相同的结果?

awk -v WIDTH=5 '{ gsub(".{"WIDTH"}", "&\n"); print }' file
AWK question about the example
Run Code Online (Sandbox Code Playgroud)

Jot*_*tne 7

要使用{5}你需要re-interval像这样启用:

awk --re-interval '{ gsub(/.{5}/, "&\n" ) ; print}' file
awk -v WIDTH=5 --re-interval '{ gsub(".{"WIDTH"}", "&\n"); print }' file
Run Code Online (Sandbox Code Playgroud)

你也可以使用--posix,但它会禁用其他功能awk

awk -v WIDTH=5 --posix '{ gsub(".{"WIDTH"}", "&\n"); print }' file
Run Code Online (Sandbox Code Playgroud)

  • 您应该声明`--re-interval`是正确的解决方案,而不是`--posix`,因为虽然两者都将启用RE间隔,但后者将禁用所有其他有用的gawk功能,例如`gensub()`. (2认同)

per*_*eal 5

您可以使用fold命令而不是awk:

fold -w 5 input
Run Code Online (Sandbox Code Playgroud)

或者如果您没有文件中的输入:

echo 'AWK question about the example' | fold -w 5
Run Code Online (Sandbox Code Playgroud)

两个给:

AWK q
uesti
on ab
out t
he ex
ample
Run Code Online (Sandbox Code Playgroud)

  • 你可以但不能回答OP问题,为什么它不起作用. (3认同)