Как удалить строки, не содержащие определенный текст, из длинного текстового файла (возможно, более 70 000 строк) с помощью пакета - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть длинный текстовый файл (возможно, более 70 000 строк), который мне нужно изменить - удалить некоторые строки и изменить некоторые другие. Что такое правильная пакетная команда?

У меня есть этот текстовый файл:

blah
blah_blah, blah_other_blah
NUMLINES,     71369
VARIABLE_TYPES,T1,T10,S
!,NUMBER,OTHER
*,"1421915957",3
*,"1422222863",7
*,"1422239294",4
*,"1422382002",10
*,"1422485177",4
*,"1422496045",8
*,"1422500174",10
*,"1422500175",8

and so on

*,"1930482159",10
*,"1930482160",3
*,"1930482161",3

## some other blah lines
blah

И я хочу иметь это:

NUMBER;OTHER
1421915957;3
1422222863;7
1422239294;4
1422382002;10
1422485177;4
1422496045;8
1422500174;10
1422500175;8

and so on

1930482159;10
1930482160;3
1930482161;3

Спасибо за вашу помощь.

Пока что я попытался удалить ненужные строки с помощью этого кода:

findstr /v /b /c:"*," file1.txt > file2.txt

findstr /x /v /l /G:"file1.txt" "file2.txt" > "file3.txt"

Но он завершается со строкой поиска до long

1 Ответ

0 голосов
/ 07 ноября 2018

используйте findstr, чтобы получить все строки, которые начинаются либо с !,, либо с *,. Поместите цикл for /f, чтобы извлечь нужную информацию и перенаправить вывод в новый файл:

(for /f "tokens=1,2,* delims=," %%a in ('type file.txt ^|findstr /b /c:"!," /c:"*,"') do @echo %%~b,%%c)>file2.txt

~ в %%~b удалит окружающие кавычки.

(Примечание: это синтаксис командного файла. Если вы хотите выполнить его непосредственно в командной строке, замените каждый %% на один %)

(надеюсь, ни одна из ваших blah строк не начинается с !, или *,)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...