只需要 grep 倒数第 2 和第 3 之间的单词 /
这显示在下面的摘录中,请注意文件名上的位置从前面开始计算并不总是相同的。任何想法都会有所帮助。
/home/user/Drive-backup/2010 Backup/2010 Account/Jan/usernameneedtogrep/user.dir/4.txt
只需要 grep 倒数第 2 和第 3 之间的单词 /
这显示在下面的摘录中,请注意文件名上的位置从前面开始计算并不总是相同的。任何想法都会有所帮助。
/home/user/Drive-backup/2010 Backup/2010 Account/Jan/usernameneedtogrep/user.dir/4.txt
这是一个完成这项工作的 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
我会使用awk
:
awk -F/ '{print $(NF-2)}'
/
NF
是最后一列、$NF
最后一列本身和倒数$(NF-2)
第三列的索引。您当然可能首先需要过滤掉输入中不是路径的行(例如,使用grep
然后管道到awk
)
像这样的正则表达式应该可以解决问题:
/.\/(.+?)\/.*?\/.*$/
(注意我使用惰性搜索(+?
和*?
),所以它不包括我们不希望的斜线)