1

只需要 grep 倒数第 2 和第 3 之间的单词 /

这显示在下面的摘录中,请注意文件名上的位置从前面开始计算并不总是相同的。任何想法都会有所帮助。

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

4

3 回答 3

1

这是一个完成这项工作的 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
于 2011-06-16T15:58:35.617 回答
0

我会使用awk

awk -F/ '{print $(NF-2)}'
  • 分裂/
  • NF是最后一列、$NF最后一列本身和倒数$(NF-2)第三列的索引。

您当然可能首先需要过滤掉输入中不是路径的行(例如,使用grep然后管道到awk

于 2011-06-16T15:58:39.120 回答
0

像这样的正则表达式应该可以解决问题:

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

(注意我使用惰性搜索(+?*?),所以它不包括我们不希望的斜线)

于 2011-06-16T16:12:48.717 回答