gpt4 book ai didi

linux - 防止空格成为for循环bash/shell中的定界符

转载 作者:太空宇宙 更新时间:2023-11-04 12:24:34 25 4
gpt4 key购买 nike

我有一个变量/文件 (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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com