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'