我有一个变量/文件 (segment_size_date) 其中包含
11-Jul-2017 11:00,604;13-Jul-2017 10:00,604;
它是存储过程(oracle)的输出
我想用';'分隔内容因此 11-Jul-2017 11:00,604 在一个变量中,但它正在使用空格分隔。
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
我希望它存储在一个变量/文件中。例如。在第一个循环 11-Jul-2017 11:00,604 存储在一个文件/变量中(我将处理它),下一个循环 13-Jul-2017 10:00,604 被存储(覆盖不是问题)
我试过使用引号但没有成功。 “2017 年 7 月 11 日 11:00,604” “2017 年 7 月 13 日 10:00,604”
还有一件事我不能在空白处插入任何东西 像 11-Jul-2017 11:00,604;13-Jul-2017 10:00,604 -- 我不能在空白处插入任何东西 (11-Jul-2017 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
关于linux - 防止空格成为for循环bash/shell中的定界符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45147908/