Мне нужно импортировать некоторые данные из печатных отчетов в форму, которая может быть использована для перехода на другую систему. Кажется, я застрял в одном маленьком шаблоне: я пытаюсь удалить строки, содержащие строку .00, начиная с столбца 128 в отчете, вместе со следующей строкой.Соответствие sed в определенном столбце в текстовом файле?
Я использую следующие: sed '/^\{128\}\.00/,+1 d'inputfile >outputfile
Я использую FreeBSD, и я получаю сообщение об ошибке RE: повторение-оператор операнда недействительный. Я получаю ту же ошибку, если я экспериментирую, удалив +1, чтобы удалить следующую строку, поэтому я предполагаю, что мне не хватает чего-то более элементарного.
(Я уверен, что кто-то скачет и скажет: «Вы должны использовать awk, как это ...», но у меня есть конкретные причины для этого, используя sed. И, к сожалению, это было 30+ лет с тех пор, как я был мастером sed/awk, и я так же ржав на обоих из них. 8-))
Благодарим за помощь.
Это пример две строки текста я пытаюсь соответствовать:
1011-000 .00 .00 .00 .00 .00
Petty Cash-Shop
Обратите внимание, что, несмотря на линии обертывания здесь, последний столбец +0,00. Я получил номера столбцов от экспериментов в vim. Я ожидаю, что обе эти строки исчезнут после выполнения команды sed.
Я сменил команду на sed '/\.\{128\}\.00/,+1 d'inputfile >outputfile
, и они не исчезли. («». Но спасибо поймать, что это было необходимо, я больше не получаю сообщение об ошибке RE.)
Ваш квант '{128}' изменяет '^', что не имеет смысла. Используйте '. {128}' вместо (или правильно escaped '. \ {128 \}') – Aaron
Нет ничего перед '\ {128 \}', что вам нужно 128 из? – 123
Что разделяет «столбцы»? Пробелы, запятые, вкладки, что-то еще? Или вы имеете в виду «положение персонажа»? Независимо от того, почему вы хотите использовать sed, это плохо, если только клавиши «a», «w» и «k» не сломаны на вашей клавиатуре. sed - это простые подстановки на отдельных строках, то есть все. Вы не делаете этого, так что это не работа для sed, это работа для awk, так как ваш компьютер в настоящее время говорит вам, демонстрируя не переносимую природу использования sed для чего-то подобного. –