我有一个单词列表:
aaaa bbbb ccc dddd
eee fff ggg hhh
iii jjj kkk
我希望每个单词都在一个单独的行中:
aaaa
bbbb
ccc
dddd
eee
fff
ggg
hhh
iii
jjj
kkk
如何在最少字符数的bash中执行此操作?没有awk最好。
答案 0 :(得分:6)
使用纯粹的bash:
while IFS=" " read -r -a line
do
printf "%s\n" "${line[@]}"
done < file
请参阅:
$ while IFS=" " read -r -a line; do printf "%s\n" "${line[@]}"; done < file
aaaa
bbbb
ccc
dddd
eee
fff
ggg
hhh
iii
jjj
kkk
使用xargs
:
xargs -n 1 < file
使用awk
:
awk '{for(i=1;i<=NF;i++) print $i}' file
或
awk -v OFS="\n" '$1=$1' file
使用sed
:
sed 's/ /\n/g' file
使用cut
:
cut -d' ' --output-delimiter=$'\n' -f1- file
使用grep
:
grep -o '[^ ]\+' file
或
grep -Po '[^\s]+' file