2014-01-24 72 views
2

我有一個文件:AWK解釋例如

AWK question about the example 

此命令行之有效:

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

爲什麼這個命令不會打印相同的結果呢?

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

爲什麼這個命令不打印相同的結果?

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

回答

7

要使用{5}您需要啓用re-interval這樣的:

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

你也可以使用--posix太多,但它會在awk

awk -v WIDTH=5 --posix '{ gsub(".{"WIDTH"}", "&\n"); print }' file 
+0

謝謝你的澄清。 – Tedee12345

+0

+1此外,如果您升級到Gnu Awk版本4,則無需再指定'--re-interval'。 –

+0

好點,但它的便攜性會降低,因爲大多數Linux發行版仍在運行gawk 3.xx.不要問我爲什麼從4.x開始已經有一段時間了。 – Jotne

5

禁止其它功能時,也使用fold命令而不是awk

fold -w 5 input 

,或者如果你沒有在文件中輸入:

echo 'AWK question about the example' | fold -w 5 

均可以得到:

AWK q 
uesti 
on ab 
out t 
he ex 
ample 
+3

你可以但沒有給出關於OP問題的答案,爲什麼它不起作用。 – Jotne

+1

正確,但對於每個問題都有正確的工具,並且您已經清楚地解釋了問題。 – perreal