2016-04-18 14 views
1

私はラインで単語のリストを持っている:バッシュ:複数行に分割ライン

aaaa bbbb ccc dddd 
eee fff ggg hhh 
iii jjj kkk 

私は別の行に各単語をしたい:

とbashでそれを行う方法
aaaa 
bbbb 
ccc 
dddd 
eee 
fff 
ggg 
hhh 
iii 
jjj 
kkk 

最小文字数?好ましくはawkなし。純粋なbashのでは

答えて

4

while IFS=" " read -r -a line 
do 
    printf "%s\n" "${line[@]}" 
done < file 

参照:xargs

$ while IFS=" " read -r -a line; do printf "%s\n" "${line[@]}"; done < file 
aaaa 
bbbb 
ccc 
dddd 
eee 
fff 
ggg 
hhh 
iii 
jjj 
kkk 

awk

xargs -n 1 < file 

awk '{for(i=1;i<=NF;i++) print $i}' file 

または

awk -v OFS="\n" '$1=$1' file 

sed 's/ /\n/g' file 

cut付:

cut -d' ' --output-delimiter=$'\n' -f1- file 

grep付:

grep -o '[^ ]\+' file 
xargsコマンドは、ファイルが `含​​まれている場合は、たとえば任意のエコーフラグを印刷しない答えること

または

grep -Po '[^\s]+' file 
+1

注意-e/E'または'それはxargsのためのデフォルトエコーの引数としてこれを解釈します-n' 。 – 123

関連する問題