打印不同行上的每个单词,用逗号分隔

时间:2017-08-02 03:43:06

标签: bash

我想在不同的行中打印不同的单词,这些单词使用bash脚本用逗号分隔。

ent0
ent4
ent1,ent5
ent2,ent6
ent3,ent7
ent29,ent30

我想在不同的行中打印每个单词。

2 个答案:

答案 0 :(得分:1)

使用c = {"197315"=>{:qty=>1, :modifiers=>[ {"197322-197321"=>{ :qty=>1, :modifiers=>['2222'=>'33333', '4444'=>'55555'] } }, {"197323-197319"=>{:qty=>1} } ] } } d = {"197315"=>{:qty=>1, :modifiers=>[ {"197322-197321"=>{:qty=>1, :modifiers=>['4444'=>'55555', '2222'=>'33333'] } }, {"197323-197319"=>{:qty=>1} } ] } } arr_to_set(c) == arr_to_set(d) #=> true

tr

使用echo 'ent0 ent4 ent1,ent5 ent2,ent6 ent3,ent7 ent29,ent30' | tr ',' '\n'

sed

两者都会产生,

echo 'ent0 ent4 ent1,ent5 ent2,ent6 ent3,ent7 ent29,ent30' | sed 's/,/\n/g'

编辑:

您的要求不够明确。如果你想用逗号和空格分开,

ent0 ent4 ent1
ent5 ent2
ent6 ent3
ent7 ent29
ent30

echo 'ent0 ent4 ent1,ent5 ent2,ent6 ent3,ent7 ent29,ent30' | tr ', ' '\n'

这将产生,

echo 'ent0 ent4 ent1,ent5 ent2,ent6 ent3,ent7 ent29,ent30' | sed 's/\(,\| \)/\n/g;'

如果内容位于文件中,例如ent0 ent4 ent1 ent5 ent2 ent6 ent3 ent7 ent29 ent30 ,请使用它代替input.txt

echo

答案 1 :(得分:0)

如果我理解您的问题,您只需使用IFSprintf命令替换就可以轻松完成,例如

$ IFS="$IFS,"; printf "%s\n" $(<file.txt)
ent0
ent4
ent1
ent5
ent2
ent6
ent3
ent7
ent29
ent30

(完成后不要忘记将IFS重置为默认$' \t\n'(空格标签换行符)。您可以保存oldifs="$IFS",然后运行命令,并设置{ {1}}然后轻松重置