1

Я хотел бы иметь возможность анализировать текстовый файл, который содержит такие данные, как:

2014-08-06 18:06:15 e:\shared\filename1.Shared orphan entry BM-100
2014-08-06 18:46:15 e:\shared\filename222.Shared orphan entry BM-214
2014-08-06 18:53:15 e:\shared\filename92.Shared orphan entry BM-674

Это на Windows, и я хотел бы иметь возможность запустить сценарий пакетного файла, чтобы удалить строку даты и текст после расширения файла .shared. Есть идеи?

4 ответа4

0

Вам нужна Unix-утилита sed, которая обрабатывает правки регулярных выражений и доступна во многих версиях Windows (просто ищите sed.exe). Если вы передаете имя файла в ваш пакетный файл, он должен содержать что-то вроде:

sed <"%1" 's/\.Shared .*$'//|sed 's/^.* .* //' >"%1.mod"

Это удаляет в каждой строке от " .Разделяется "до конца строки, затем от начала строки до второго пробела и сохраняет результат в переданном имени файла с добавлением .mod .

Конечно, вы можете удалить одно или оба перенаправления и вместо этого перенаправить ввод и / или вывод при вызове командного файла.

0

Если вы используете Windows Vista или более позднюю версию, вы можете использовать PowerShell

(gc D:\input.txt) | % {$_ -replace "2014", "xxx"} | sc D:\input.txt
  • gc myPath Alias для Get-Content для чтения в файл
  • | передать текст следующей команде
  • () необходимо использовать, иначе входной файл все еще открыт, когда вы хотите записать его обратно
  • % { ... } Псевдоним для ForEach-Object, который перебирает каждую строку
  • -replace LookFor, ReplaceWith заменяет вашу строку
  • sc myPath Alias для Set-Content, чтобы записать новый контент по тому же пути

дальнейшее чтение

0

С помощью этого скрипта Python (который встроен в большинство дистрибутивов Linux и легко устанавливается для Windows):

import sys

if __name__ == "__main__":
    input_file = sys.argv[1]
    output_file = sys.argv[2]

    with open(input_file) as fp:
        with open(output_file, 'w') as fp_w:
            for line in fp:
                fp_w.write("{}\n".format(line.split(' ')[2]))

Вы получите этот вывод:

e:\shared\filename1.Shared
e:\shared\filename222.Shared
e:\shared\filename92.Shared

Шаги по созданию скрипта Python:

  1. создайте файл с именем parser.py (или как вы хотите его называть)
  2. скопируйте код выше в файл
  3. выполните следующую команду:

    python parser.py test.txt test_output.txt

    Это предполагает, что test.txt является входным файлом, а test_output.txt - это путь к файлу, в который вы хотите записать результаты.

0

Командная строка Windows

for /f "tokens=2-3"   %i in (x.txt) do echo %i %j

результаты в

18:53:15 e:\shared\filename92.Shared

(или же)

for /f "tokens=3"   %i in (x.txt) do echo %i

результат в

e:\shared\filename92.Shared

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .