2012-03-03 39 views
0

嗨字符串我犯了一個腳本這是從我的分貝取一個數據,並將其存儲在一個.csv文件如何更換sed的

.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,,,,,,,,,,,, 

當我試圖替換一個字符串取決於它將添加所有相應日期的日期。

例如

我要替換的字符串3月2日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% 

我想只更換特定的日期並非所有的情況。

回答

3

您可以使用此命令sed

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

它只能更換$mydata$finalstring在包含$finddate線。

+0

它不工作它取代2月3日12月3日和3月22日 – 2012-03-03 18:01:23

+0

嘗試:sed「/^$ finddate/s/$ mydata/$ finalstring /」 – 2012-03-03 18:04:01

+0

您可以將'^'添加到模式以匹配行的開頭。 – kev 2012-03-03 18:04:50

1

^ in regular expressions表示「行首」。所以你需要將"s/2-Mar-12/$mydata/"更改爲"s/^2-Mar-12/$mydata/"。當然,它不僅在sed中起作用。