bash - sed不会替换所有分号

时间:2016-02-29 15:45:59

标签: bash sed

我在文本文件中写了三个变量。现在它变成了一个变量,因为try和error就像这样更快。这三个变量由脚本生成,每个变量都有一个包含值的列。例如,变量如下所示:

hour
minute
minute
day

我使用以下代码将它们组合在一起:

New_fileloc=$(paste <(echo "$Grabinterval") <(echo "$Filelocation") <(echo "$Time") --delimiters ';' | sed -e 's/^\|$/"/g' -e 's/\;/";"/')

最后,我需要每列中的每一行用双引号分隔,并用分号分隔。目前我在那个衬里使用sed这样做。这很好用。我的输出如下:

"hour";"A_path/to/somewhere/;2016-02-10 17:07:00Z"
"minute";"A_path/to/somewhere/;2016-01-29 17:26:20Z"
"minute";"A_path/to/somewhere/;2016-01-29 17:26:20Z"
"day";"A_path/to/somewhere/;2016-01-29 00:07:00Z"

第一个分号替换为“;”,但每行中的第二个分号不替换。我不明白为什么。

1 个答案:

答案 0 :(得分:2)

在您发给sed的最后一个命令中,您错过了g

s/\;/";"/g

's/\;/";"/'的原始命令只会替换一个,第一个。