我有一个变量/文件(段大小)包含
11-Jul-2017 11:00,604;13-Jul-2017 10:00,604;
它是存储过程(oracle)的输出
我想用“;”分隔内容,这样2017年7月11日11:00604就在一个变量中,但它是用空格分隔的。
for i in (echo $segment_size_date | sed "s/;/ /g")
do
echo "$i"
done
我得到的输出像
(11-Jul-2017) 1st line
(11:00,60413-Jul-2017) 2nd line
(10:00,604) 3rd line
我希望输出如下
(11-Jul-2017 11:00,604) 1st line
(13-Jul-2017 10:00,604) 2nd line
我希望它存储在一个变量/文件中。例如,在第一个循环中(2017年7月11日)11:00604存储在文件/变量中(我将处理它),而下一个循环中(2017年7月13日)10:00604存储在文件/变量中(覆盖不是问题)
我试过用引号,但运气不好。
“2017年7月11日11:00604”“2017年7月13日10:00604”
还有一件事我不能在空白处插入任何内容
比如2017年7月11日11:00604;2017年7月13日10:00604——我不能在空白处插入任何内容(2017年7月11日11:00),应该是这样的。
而且这个文件只是演示,它包含很多行,所以不能使用cut-d“”-f1“,必须使用循环。
Shell/bin/bash----linux
最佳答案
您可能只想对数据进行预处理,使每个数据都在一条线上。如果在多个文件中有多行,这就很容易了。
cat *-all-the-input-files | tr \; \\n | while read segment_size_data; do
...
done
如果您的数据是变量(如示例中所示),则会变成:
$ d="11-Jul-2017 11:00,604;13-Jul-2017 10:00,604;"
$ printf "$d" | tr \; \\n | while read var; do echo v=$var; done
v=11-Jul-2017 11:00,604
v=13-Jul-2017 10:00,604