AWK:将字符串转换为列

AWK:将字符串转换为列,awk,Awk,我想将字符串(例如:abcdef)转换为列 这就是我想要的 a b c d e f 我知道如何使用sed将字符串转换为列 $ echo abcdef | sed 's/[^.]/&\n/g'|sed '$d' 但是如何使用awk转换它呢?您可以将字段分隔符设置为空字符串,这样每个字符都是不同的字段。然后,循环浏览并打印: $ awk -v FS="" '{for (i=1;i<=NF;i++) print $i}' <<< "abcdef" a b c d e

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

这就是我想要的

a
b
c
d
e
f
我知道如何使用
sed将字符串转换为列

$ echo abcdef | sed 's/[^.]/&\n/g'|sed '$d'

但是如何使用awk转换它呢?

您可以将字段分隔符设置为空字符串,这样每个字符都是不同的字段。然后,循环浏览并打印:

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

$awk-vfs=”“{for(i=1;i
[akshay@localhosttmp]$awk-v ORS='gsub(/./,“&\n”)'仅处理awk内部变量:

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

它将输入字段分隔符(
FS
)设置为空,这意味着每个字符都是一个字段。输出字段分隔符(
OFS
)设置为换行符。不必使用新的
$1=$1
OFS

重建记录,也许你看不到awk,但更方便:
echo abcdef | grep-o.
这会在末尾打印一行额外的内容。只需添加
-v ORS=
以避免添加后续换行符:
awk-v ORS='gsub(/,“&\n”)“
.FYI依赖设置的发布解决方案
FS=”“
是特定于gawk的,而这将在任何awk中工作。您也可以使用split,但您需要确保控制awk的排序(默认情况下是未排序的):
awk'开始{PROCINFO[“sorted_in”]=“@ind_str_asc”}{split split($0,arr,”);for(i in arr){print arr[i]}”
[akshay@localhost tmp]$ awk -v ORS= 'gsub(/./,"&\n")' <<<"abcdefgh"
a
b
c
d
e
f
g
h
echo abcdef | awk 'BEGIN{FS="";OFS="\n"}{$1=$1}1'