bash文本操作从逗号分隔变量到列表

时间:2015-03-02 21:16:57

标签: linux bash text-manipulation

我是bash中处理文本的新手,感谢任何建议!

我在脚本中早期使用了一个变量,格式如下:

runlist=echo 10,19,25,32

实际数字和列出的数字在不同的迭代中有所不同。它们总是2位数。我需要这种格式的变量用于它们的第一步。但是在后面的脚本中,我想将这些数字打印到一个列中的临时文本文件中,如下所示

cat tmp_runlist.txt
10
19
25
32

我尝试使用IFS=','但发现它还修改了运行列表变量,该变量再次用于脚本的末尾。我一直在探索使用cutawk,但需要一些灵活的东西,只需抓住逗号之间的字符,而不是在回车之前使用逗号。

提前感谢您的想法:)

2 个答案:

答案 0 :(得分: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'

答案 1 :(得分:1)

grep -o可能有所帮助:

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