Удаление строк в файле с помощью "inplace"

Другой вопрос, который у меня есть, - как манипулировать текстовыми файлами.

Я объединил несколько файлов в один большой. Теперь у меня есть все заголовки файлов в новом большом файле, и я хочу удалить их в файле без сохранения в новом.

Мой файл отделен ";" и имел обыкновение оставаться отделенным ";"

Я искал и нашел здесь: Как найти линии, соответствующие шаблону, и удалить их?

Я попробовал это в моем cmd (я бегу windows) и получаю сообщение об ошибке:

gawk: fatal: не удается открыть исходный файл "на месте" для чтения (нет такого файла или каталога)

Моя кодовая строка:

gawk -i inplace "!/^Address (CO)/" filename.txt

Я не нахожу ничего о том, как заменить его на Windows, если есть что-то особенное, кроме изменения "на". Все заголовки содержат работу "Адрес (CO)" в первом столбце.

Образец моего ввода:

Адрес (CO) - Заказчик - Номер телефона
Главная улица 1 - Карл Монте - 123456
Mainstreet 2 - Аня Коулман - 407846
Адрес (CO) - Заказчик - Номер телефона
Mainstreet 10 - Себастьян Воль - 756189
Mainstreet 7 - Деннис Манн - 694311
Адрес (CO) - Заказчик - Номер телефона
...

Желаемый результат:

Адрес (CO) - Заказчик - Номер телефона
Главная улица 1 - Карл Монте - 123456
Mainstreet 2 - Аня Коулман - 407846
Mainstreet 10 - Себастьян Воль - 756189
Mainstreet 7 - Деннис Манн - 694311
...

Так что "просто" удалите строки, которые содержат "Адрес", но не первое появление.

Я также попробовал этот oneliner:

gawk "!/Address/" filename.txt > newfile.txt

Но мой вывод такой же, как и мой. Так что filename.txt == newfile.txt. Это ничего не удаляет.

Добавляя мой вывод, сделайте следующее:
Я конвертирую несколько CSV-файлов в TXT, используя

for /f "tokens=*" %%f in ('dir XLS\*.xls /s /b') do copy "%%f" ".\TXT\%%~nf.txt"

После этого я использую powershellscript для преобразования разделителя табуляции в точку с запятой, используя:

for /f "delims=" %%i in ('dir TXT\*.txt /b /s') do powershell.exe -executionpolicy remotesigned -file %powershellscript% -path "%%i" -outPath "Output\%%~nxi"

Теперь у меня есть несколько TXT-файлов с разделителем точки с запятой в одной папке. Все они с одинаковым заголовком. Для объединения их без заголовка в один "бигфайл" я попытался:

(for %%F in (Output\*.txt) do @more +1 "%%F") > output.txt

Что не работает. Я тоже попробовал:

copy *.txt merged_tempfile.txt
gawk -F";" -v OFS=";" "$1 !~ /Address (CO)/ {print}" merged_tempfile.txt > bigfile.txt

Что не работает так же хорошо...
Когда я пытаюсь использовать

gawk dos2unix file1  
gawk "!/Address (CO)/" file1.txt > temp1.txt

Я получаю только тот же контент в temp1, как в file1, с этим в последнем столбце.

਍ 圀 嘀 圀 娀 娀 䄀䄀 䐀 䐀 䐀 䐀 ㌀ ㌀㄀ 攀 攀 攀 攀 攀 ℀        栀 最 ㄀ ㄀ ㄀㬀 刀㬀一漀琀爀甀昀洀 搀 搀甀 匀圀 圀 嘀攀 攀 椀 椀漀渀㬀 ㄀ ㌀ഀഀ

0 ответов

Другие вопросы по тегам