2015-03-02 28 views
0

我是一个在bash中操作文本的新手,并感谢任何建议!bash文本处理从逗号分隔变量列表

我在被格式化这样的脚本早期使用的变量:

runlist=echo 10,19,25,32 

的实际数量和多少个号码可以列举出各种不同的迭代。它们将始终是2位数字。我需要这种格式的变量用于第一步。但后来的剧本,我想打印出这些数字到一个临时文本文件中一列这样

cat tmp_runlist.txt 
10 
19 
25 
32 

我尝试使用IFS=','却发现它也修改了运行列表变量,用来再次走向脚本的尽头。我一直在探索使用cutawk,但是只需要在逗号之间抓住字符并且在回车之前不用逗号就可以灵活使用。

预先感谢您的想法:)

+0

你的变量是整个'echo .....'命令? – 2015-03-02 21:21:12

回答

2

我要承担,与其

runlist=echo 10,19,25,32 

你的意思

runlist=$(echo 10,19,25,32) 

...或只是

runlist=10,19,25,32 

在这种情况下,最简单的方法应该是使用

echo "$runlist" | tr , '\n' 

如果真的是

runlist=echo 10,19,25,32 

,那么你可以使用

echo "$runlist" | sed 's/^echo *//;s/,/\n/g' 
+0

谢谢,echo“$ runlist”| tr,'\ n'工作! – JaYbirD 2015-03-03 00:05:24

1

grep -o可能帮助:

s='10,19,25,32' 
grep -o '[0-9]\+' <<< "$s" 
10 
19 
25 
32 
+1

谢谢,这工作也是! – JaYbirD 2015-03-03 00:07:52