我有一行单词的列表:
aaaa bbbb ccc dddd
eee fff ggg hhh
iii jjj kkk
Run Code Online (Sandbox Code Playgroud)
我想要每个单词放在单独的行中:
aaaa
bbbb
ccc
dddd
eee
fff
ggg
hhh
iii
jjj
kkk
Run Code Online (Sandbox Code Playgroud)
如何在字符最少的 bash中做到这一点?最好没有awk。
使用纯bash:
while IFS=" " read -r -a line
do
printf "%s\n" "${line[@]}"
done < file
Run Code Online (Sandbox Code Playgroud)
看到:
$ while IFS=" " read -r -a line; do printf "%s\n" "${line[@]}"; done < file
aaaa
bbbb
ccc
dddd
eee
fff
ggg
hhh
iii
jjj
kkk
Run Code Online (Sandbox Code Playgroud)
与xargs:
xargs -n 1 < file
Run Code Online (Sandbox Code Playgroud)
与awk:
awk '{for(i=1;i<=NF;i++) print $i}' file
Run Code Online (Sandbox Code Playgroud)
要么
awk -v OFS="\n" '$1=$1' file
Run Code Online (Sandbox Code Playgroud)
与sed:
sed 's/ /\n/g' file
Run Code Online (Sandbox Code Playgroud)
与cut:
cut -d' ' --output-delimiter=$'\n' -f1- file
Run Code Online (Sandbox Code Playgroud)
与grep:
grep -o '[^ ]\+' file
Run Code Online (Sandbox Code Playgroud)
要么
grep -Po '[^\s]+' file
Run Code Online (Sandbox Code Playgroud)