Как заменить строку на седь - PullRequest
0 голосов
/ 03 марта 2012

Привет, я сделал скрипт, который берет данные из моей базы данных и сохраняет их в файле .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-марта-12

команда is

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 ]

3 голосов
/ 03 марта 2012

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

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

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

1 голос
/ 04 марта 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...