如何在sed上替换字符串

时间:2012-03-03 17:50:13

标签: linux sed

您好我制作了一个脚本,它从我的数据库中获取数据并将其存储到.csv文件中

.csv文件的内容:

1-Mar-12,183991,1017  --- --- more columns are there
2-Mar-12,,,,,,,,,,,,
3-Mar-12,,,,,,,,,,,,
4-Mar-12,,,,,,,,,,,,
5-Mar-12,,,,,,,,,,,,
6-Mar-12,,,,,,,,,,,,

当我尝试替换字符串取决于它将添加所有相应日期的日期。

例如

我想在2-Mar-12

上替换一个字符串

命令是

sed "s/$finddate/$finalstring/" dailyrep.csv > DailyReport_$datenow.csv


sed "s/2-Mar-12/$mydata/" origfile > fileto store

输出

2-Mar-12,177950,8159,95.62%,6785711
3-Mar-12,,,,,,,,,
4-Mar-12,,,,,,,,,
5-Mar-12,,,,,,,,,
6-Mar-12,,,,,,,,,

11-Mar-12,,,,,,,,,,,,,,,,,,,,
12-Mar-12,177950,8159,95.62%,


21-Mar-12,,,,,,,,,,,,,,,,,,,
22-Mar-12,177950,8159,95.62%

我想只替换那个特定的日期而不是所有的日期。

2 个答案:

答案 0 :(得分:3)

您可以使用此sed命令:

$ sed "/^$finddate/s/$mydata/$finalstring/" dailyrep.csv

它只会在包含$mydata的行上将$finalstring替换为$finddate

答案 1 :(得分:1)

regular expressions中的

^表示“行首”。因此,您需要将"s/2-Mar-12/$mydata/"更改为"s/^2-Mar-12/$mydata/"。当然,它不仅适用于sed。