我是bash中处理文本的新手,感谢任何建议!
我在脚本中早期使用了一个变量,格式如下:
runlist=echo 10,19,25,32
实际数字和列出的数字在不同的迭代中有所不同。它们总是2位数。我需要这种格式的变量用于它们的第一步。但是在后面的脚本中,我想将这些数字打印到一个列中的临时文本文件中,如下所示
cat tmp_runlist.txt
10
19
25
32
我尝试使用IFS=','
但发现它还修改了运行列表变量,该变量再次用于脚本的末尾。我一直在探索使用cut
和awk
,但需要一些灵活的东西,只需抓住逗号之间的字符,而不是在回车之前使用逗号。
提前感谢您的想法:)
答案 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