URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 10135
[ Назад ]

Исходное сообщение
"Найти строку в файле и удалить предыдущую перед ней"

Отправлено XaKoN , 12-Дек-16 17:31 
Собственно сабж. Есть csv файл:

Comprehensive Order Report
«Order Type»,«Operating Unit»
«Standard - DIRECT A», «International Business Machines Corporation»
«Standard - DIRECT B», «International Business Machines Corporation»
«Standard - DIRECT C», «International Business Machines Corporation»
«Standard - DIRECT D», «International Business Machines Corporation»

Переодически в качестве первой строки в нём появляется строка Comprehensive Order Report. Необходимо удалить именно её, когда она есть в файле. «Order Type»,«Operating Unit» - название полей и всегда содержатся в файле т.е. можно опираться на них.

Пока вижу решение только двумя способами: 1) найти «Order Type»,«Operating Unit» и вывести их всё что дальше в файле до его конца.
2) найти «Order Type»,«Operating Unit» и удалить всё что выше.

Пробовал использовать sed для этих целей, но ничего не вышло.


Содержание

Сообщения в этом обсуждении
"Найти строку в файле и удалить предыдущую перед ней"
Отправлено михалыч , 12-Дек-16 20:47 
sed -i '/Comprehensive Order Report/d' csv

"Найти строку в файле и удалить предыдущую перед ней"
Отправлено shadow_alone , 13-Дек-16 02:42 
----- eee.txt ------
1line
2line
3line
4line
5line
-------------------

# sed -n '/2line/{x;d;};1h;1!{x;p;};${x;p;}' eee.txt

2line
3line
4line
5line