AWK:将字符串转换为列

时间:2015-06-30 09:38:14

标签: awk

我想将字符串(例如:abcdef)转换为列

这就是我想要的。

a
b
c
d
e
f

我知道如何使用sed

将字符串转换为列
$ echo abcdef | sed 's/[^.]/&\n/g'|sed '$d'

但是如何使用awk隐藏它?

3 个答案:

答案 0 :(得分:3)

[akshay@localhost tmp]$ awk -v ORS= 'gsub(/./,"&\n")' <<<"abcdefgh"
a
b
c
d
e
f
g
h

答案 1 :(得分:2)

您可以将字段分隔符设置为空字符串,以便每个字符都是不同的字段。然后,循环遍历它们并打印:

$ awk -v FS="" '{for (i=1;i<=NF;i++) print $i}' <<< "abcdef"
a
b
c
d
e
f

哪个is equivalent to

awk -F "" '{for (i=1;i<=NF;i++) print $i}' <<< "abcdef"

答案 2 :(得分:0)

仅使用awks内部变量:

echo abcdef | awk 'BEGIN{FS="";OFS="\n"}{$1=$1}1'

它将输入字段分隔符(FS)设置为空,这意味着每个字符都是一个字段。输出字段分隔符(OFS)设置为换行符。请注意,使用新$1=$1重建记录需要OFS