Как удалить определенные символы в текстовом файле

У меня есть следующие строки в текстовом файле:

1 Q0 /home/nikol123/Downloads/Ergasia_1/Ergasia_1/metadata/13/120411.xml 1 1 Q0 /home/nikol123/Downloads/Ergasia_1/Ergasia_1/metadata/11/105016.xml 2 1 Q0 /home/nikol123/Downloads/Ergasia_1/Ergasia_1/metadata/15/149972.xml 3 1 Q0 /home/nikol123/Downloads/Ergasia_1/Ergasia_1/metadata/12/110688.xml 4 

и я хочу сохранить только эти данные:

 1 Q0 120411 1 1 Q0 105016 2 1 Q0 149972 3 1 Q0 110688 4 

а именно сохранить от каждой строки путь /home/nikol123/Downloads/Ergasia_1/Ergasia_1/metadata/13/120411.xml например, только номер 120411 и т. д. …

3 Solutions collect form web for “Как удалить определенные символы в текстовом файле”

Попробуйте awk с / awk , а также (пробел) в качестве разделителей полей:

 awk -F'[/. ]' '{print $1 " " $2 " " $11 " " $13}' file 

Вывод:

 1 Q0 120411 1 1 Q0 105016 2 1 Q0 149972 3 1 Q0 110688 4 

Попробуйте sed:

 sed 's/\(1 Q0\).*\/\(.*\)\.xml\( .*\)/\1 \2\3/' file 

ИЛИ

 sed 's/\(.*\)\/home.*\/\(.*\)\.xml\( .*\)/\1\2\3/' file 

Вывод:

 1 Q0 120411 1 1 Q0 105016 2 1 Q0 149972 3 1 Q0 110688 4 

Мое решение с sed (OSX & BSD):

 sed -E 's!([0-9]*) (Q0) [a-zA-Z0-9_/]*/([0-9]*).xml ([0-9])!\1 \2 \3 \4!g' file.txt 

Если вам нужен другой шаблон (например, Q0 не постоянный …), вы должны его адаптировать.

  • Терминология для команды в Command $ (...)
  • Как суммировать номера совпадений
  • Смущенный этим сценарием с вилкой бомбы
  • строка в файле как переменная
  • Как проверить ввод чисел в оболочке Linux?
  • Удерживать несколько пробелов, содержащих аргументы в одной переменной?
  • Как получить имена файлов при использовании find и sed
  • «Список аргументов слишком длинный» для цикла
  • Запустите команду в sudo через SSH
  • Как узнать, содержит ли PWD пробелы или буквы, отличные от английского?
  • Как я могу сравнивать разные файлы, не открывая их?
  • Interesting Posts

    Как права на каталог влияют на файлы в нем?

    Найдите, какие каталоги каждой группы могут получить доступ

    Почему `lsof -i` не показывает открытое соединение, которое перечисляет` netstat -n`?

    Как повторить команду с добавленным параметром

    Какие плохие вещи могут произойти, если мы не будем использовать sudoedit?

    OpenBSD 5.9 не может предварительно загружать библиотеку ''

    Сортировка с Perl с учетом настроек локали

    Попытка записи из источника звука по умолчанию

    Общие библиотеки не могут быть найдены внутри сеанса экрана

    Как использовать неиспользуемое пространство на моем загрузочном диске в FreeBSD

    Как я могу проверить, установлено ли я несвободное программное обеспечение?

    Создание пользователем собственного «root»

    Сортировка на основе поля1, field2, но сохранение поля 1 сортировки и игнорирование нулей / пробелов во 2-й сортировке

    Что делают файлы dead.letter

    Как диагностировать тайм-аут соединения SSH?

    Linux и Unix - лучшая ОС в мире.