我想将字符串(例如:abcdef
)转换为列
这就是我想要的。
a
b
c
d
e
f
我知道如何使用sed
$ echo abcdef | sed 's/[^.]/&\n/g'|sed '$d'
但是如何使用awk
隐藏它?
答案 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
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
。