2012-03-03 3 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,,,,,,,,,,,, 

когда я пытаюсь заменить строку, зависит от даты, когда она добавит все соответствующие даты.

, например

я хочу, чтобы заменить строку на 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% 

Я хочу, чтобы заменить только что конкретная дата не все это происходит.

ответ

3

Вы можете использовать эту команду: sed

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

Это только заменить $mydata на $finalstring на линиях, которые содержат $finddate.

+0

Это не работает, он заменяет 2 марта 12 марта и 22 марта –

+0

Попробуйте: sed "/^$ finddate/s/$ mydata/$ finalstring /" –

+0

Вы можете добавить '^' к шаблону в соответствии с началом строки , – kev

1

^ в regular expressions означает «начало линии». Так что вам нужно изменить "s/2-Mar-12/$mydata/" на "s/^2-Mar-12/$mydata/". Конечно, это работает не только в sed.

Смежные вопросы