Обрезка текстовых файлов из командной строки (Windows) - PullRequest
4 голосов
/ 07 мая 2011

У меня есть текстовый файл, который содержит несколько сотен строк, например

test.bin:8948549854958

Все они стилизованы под вышеуказанный файл (xxxxxxx.xxx:xxxxxxxxxxxxxx)

Есть ли способ обрезать всестроки, например, занимают :xxxxxxxxxxxxxxx строки, поэтому просто оставьте xxxxxxx.xxx?

Ответы [ 7 ]

7 голосов
/ 07 мая 2011

Trim.bat:

@FOR /F "tokens=1 delims=:" %%G IN (%1) DO @echo %%G

Использование: trim source.txt > destination.txt

См. здесь .

3 голосов
/ 07 мая 2011

Ну, поскольку очевидно, что, кроме powershell, для окон нет «стандартного» инструмента, который делает это, вы можете свернуть свой собственный:

#include <stdio.h>
#include <string.h>

main(int argc, char *argv[])
{
    char s[2048], *pos=0;
    while (fgets(s, 2048, stdin))
    {
        if (pos = strpbrk(s, ":\r\n"))
            *pos='\0';
        puts(s);
    }
    return 0;
}

Обратите внимание, что это имеет «побочный эффект» нормализации концов строк (CRLF) и запрещения ввода строк> 2048 символов на входе. Однако он одинаково хорошо работает на всех платформах и . Я только что скомпилировал его с помощью winegcc (winelib), mingw (на linux) и компилятора MSVC. Если вы хотите двоичный файл, дайте мне знать

О, демонстрация обязательного использования:

C:\> strip.exe < input.txt > output.txt
0 голосов
/ 17 февраля 2018

для / F "токены = 1,2 delims =:"% i в (имя файла) do @echo% i

0 голосов
/ 26 августа 2013

Самый простой способ сделать это не программно, это использовать текстовый редактор, такой как TextPad или Notepad ++, и делать выбор блока (нужно переключать режимы из меню) и выбирать прямоугольную область текста (последние двенадцать столбцов или что) и просто удалите их.Когда вы находитесь в режиме выбора блока, выделение не будет меняться и захватывать начало ваших строк.

0 голосов
/ 13 марта 2013

Для блокнота ++ найти и заменить.Обязательно включите «Регулярное выражение» в левом нижнем углу вкладки «Заменить» и используйте его в качестве критерия поиска.(** \:. *) Я бы заменил его на ")", если вы не хотите, чтобы он также был удален.Если это так, вы можете удалить символ «(» для симметрии, но обязательно выключите переключатель «Регулярное выражение», иначе последующий поиск не будет работать должным образом.

0 голосов
/ 10 февраля 2013

Такая программа уже существует , хотя она действительно глючная.Это единственная программа, которую я смог найти, которая имеет эту очевидную функцию.Я бы хотел, чтобы Notepad ++ или какое-либо другое программное обеспечение для редактирования текста реализовало бы эту функцию.

0 голосов
/ 07 мая 2011

Если вы можете распространять exe-файл со своим скриптом, вы можете использовать Windows-компиляцию 'grep', например egrep .Если вы хотите написать в скрипте, у вас не так много вариантов для поиска замены в Windows.В зависимости от вашей ситуации вы можете сделать это с помощью команды 'findstr'.

...