bash 从逗号分隔变量到列表的文本操作
bash text manipulation from comma delimited variable to list
我是 bash 中处理文本的新手,非常感谢任何建议!
我在脚本的早期使用了一个变量,其格式如下:
runlist=echo 10,19,25,32
实际数字和列出的数字数量在不同的迭代中有所不同。它们将始终为 2 位数字。我需要这种格式的变量用于第一步。但在脚本的后面,我想将这些数字打印到一个临时文本文件中,像这样
cat tmp_runlist.txt
10
19
25
32
我尝试使用 IFS=','
但发现它也修改了 runlist 变量,该变量在脚本末尾再次使用。我一直在探索使用 cut
和 awk
但需要一些可以灵活地抓住逗号之间的字符而不是在马车 return 之前使用逗号的东西。
提前感谢您的想法:)
grep -o
可能有帮助:
s='10,19,25,32'
grep -o '[0-9]\+' <<< "$s"
10
19
25
32
我假设
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'
我是 bash 中处理文本的新手,非常感谢任何建议!
我在脚本的早期使用了一个变量,其格式如下:
runlist=echo 10,19,25,32
实际数字和列出的数字数量在不同的迭代中有所不同。它们将始终为 2 位数字。我需要这种格式的变量用于第一步。但在脚本的后面,我想将这些数字打印到一个临时文本文件中,像这样
cat tmp_runlist.txt
10
19
25
32
我尝试使用 IFS=','
但发现它也修改了 runlist 变量,该变量在脚本末尾再次使用。我一直在探索使用 cut
和 awk
但需要一些可以灵活地抓住逗号之间的字符而不是在马车 return 之前使用逗号的东西。
提前感谢您的想法:)
grep -o
可能有帮助:
s='10,19,25,32'
grep -o '[0-9]\+' <<< "$s"
10
19
25
32
我假设
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'