Удаление строк в файле с помощью "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, с этим в последнем столбце.
圀 嘀 圀 娀 娀 䄀䄀 䐀 䐀 䐀 䐀 ㌀ ㌀ 攀 攀 攀 攀 攀 ℀ 栀 最 㬀 刀㬀一漀琀爀甀昀洀 搀 搀甀 匀圀 圀 嘀攀 攀 椀 椀漀渀㬀 ㌀ഀഀ