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

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

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 не постоянный …), вы должны его адаптировать.

  • возвращаемое значение команды, не отображаемой в скрипте
  • KSH / bash для создания файлов динамически
  • Объединение двух частей вместе для создания единого сценария
  • Как изменить (не добавлять) числовую переменную?
  • Как войти в систему как другой пользователь внутри сценария оболочки и выполнить набор команд?
  • Использование Grep In For Loop
  • Как анализировать команды из текстового файла в сценарий bash в CLI
  • Как правильно опросить существование фонового сценария
  • Bash: увеличивать переменную в цикле while?
  • Автоматическое ведение журнала скриптов, выполняемых пользователями
  • Управление заданием по сценарию Bash
  • Изменение шаблонов гвоздики zsh для использования с cp
  • Linux и Unix - лучшая ОС в мире.