grep только для определенного слова в строке - PullRequest
1 голос
/ 16 июня 2011

Необходимо использовать только слово между 2-м и 3-м до последнего /

Это показано в приведенном ниже фрагменте, чтобы отметить, что расположение имени файла не всегда одинаково, если считать спереди.Любые идеи будут полезны.

/ home / user / Drive-backup / 2010 Backup / 2010 Account / Jan / usernameneedtogrep / user.dir / 4.txt

Ответы [ 3 ]

1 голос
/ 16 июня 2011

Вот скрипт Perl, который выполняет эту работу:

my $str = q!/home/user/Drive-backup/2010 Backup/2010 Account/Jan/usernameneedtogrep/user.dir/4.txt!;
my $res = (split('/',$str))[-3];
print $res;

вывод:

usernameneedtogrep
0 голосов
/ 16 июня 2011

регулярное выражение примерно так должно сработать:

/.\/(.+?)\/.*?\/.*$/

(обратите внимание, что я использую ленивый поиск (+? и *?), чтобы он не включал косые черты там, где мы этого не хотим)

0 голосов
/ 16 июня 2011

Я бы использовал awk:

awk -F/ '{print $(NF-2)}'
  • разделяется на /
  • NF - это индекс последнего столбца, $NF последнийсам столбец и $(NF-2) от третьего до последнего столбца.

Конечно, сначала вам может понадобиться отфильтровать строки в вашем входе, которые не являются путями (например, используя grep, а затем передатьawk)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...