sed для замены NUL или CRLF (если не в конце строки) в текстовом файле или окнах PowerShell - PullRequest
1 голос
/ 02 июня 2019

Я провел несколько часов, просматривая разные посты и тестируя разные решения, но ни одно из них не сработало. Я попробовал sed, powershell и услышал про tr, но не смог правильно его настроить / установить.

Я получаю сотни текстовых файлов на сервер Windows.

Файлы с несколькими миллионами записей содержат такие строки:

123xxxxxNULyyyyaaabbbCRLF
124xxxxxNULzzzzCRLFxxxxxCRLF

Теперь мне нужно загрузить эти данные в красное смещение, которое не может обработать NUL и видит CRLF (тот, что в середине) как конец строки и ошибки из-за пропущенных данных.

Итак, мне нужно удалить NUL global из файла затем удалите CRLF, если он не находится в конце строки

123xxxxyyyyaaabbbCRLF
124xxxxxzzzzxxxxCRLF

Я видел несколько сообщений об удалении перевода строки с помощью sed, но даже синтаксис не работал на моем windows10.

Заранее спасибо

Я могу редактировать некоторые файлы в блокноте +++, но это не будет работать с большими файлами и сотнями из них.

Я попробовал некоторые sed, которые я нашел в сообщении, но допустил ошибку.

C:\data>sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/ /g' x.txt
sed: -e expression #1, char 1: unknown command: `''

C:\data>sed -e ':a;N;$!ba;s/\n/ /g' x.txt
sed: -e expression #1, char 1: unknown command: `''

C:\data>sed -e :a;N;$!ba;s/\n/ /g x.txt
sed: -e expression #1, char 15: unterminated `s' command

Я попробовал некоторые sed, которые я нашел в сообщении, но допустил ошибку.

C:\data>sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/ /g' x.txt
sed: -e expression #1, char 1: unknown command: `''

C:\data>sed -e ':a;N;$!ba;s/\n/ /g' x.txt
sed: -e expression #1, char 1: unknown command: `''

C:\data>sed -e :a;N;$!ba;s/\n/ /g x.txt
sed: -e expression #1, char 15: unterminated `s' command

простое решение sed, powershell или другое, которое выглядит как выходной файл:

123xxxxyyyyaaabbbCRLF
124xxxxxzzzzxxxxCRLF
...