удалить часть строки из каждой строки - PullRequest
1 голос
/ 09 марта 2012

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

/home/usr1/284.txt

Весь файл похож на

/home/usr1/284.txt
/home/usr1/361.txt

Что я хочу, чтобы удалить /home/usr1/ и сохраните имя файла, например, 284.txt

Как это сделать с помощью команды linux / unix?

Ответы [ 5 ]

4 голосов
/ 09 марта 2012
sed -e 's!/home/usr1/!!' filename.txt

или

awk -F\/ {print $NF} filename.txt

должен добиться цели. Обратите внимание на использование ! вместо более обычного / в качестве разделителей шаблонов в примере sed - это означает, что вам не нужно экранировать буквальные / символы в шаблоне.

3 голосов
/ 09 марта 2012

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

cut -b 12-

Чтобы пропустить первые 11 байтов ввода.

2 голосов
/ 09 марта 2012

Вы также можете использовать Perl, например:

perl -pe 's,.*/,,' file.txt
1 голос
/ 09 марта 2012

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

while read line; do basename "$line"; done < filename

Ответное значение basename равно dirname, на случай, если вам понадобится другая часть.

0 голосов
/ 09 марта 2012

У вас есть удар?

read -d '' -a lines < input.txt
echo "${lines[@]##*/}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...