grep 仅针对线上的某些单词
只需要 grep 倒数第 2 个和第 3 个之间的单词 /
这如下面的摘录所示,请注意,文件名上的位置从前面开始计数并不总是相同。任何想法都会有帮助。
/home/user/Drive-backup/2010 备份/2010 帐户/Jan/usernameneedtogrep/user.dir/4.txt
Need to grep only the word between the 2nd and 3rd to last /
This is shown in the extract below, to note that the location on the filename is not always the same counting from the front. Any ideas would be helpful.
/home/user/Drive-backup/2010 Backup/2010 Account/Jan/usernameneedtogrep/user.dir/4.txt
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
下面是一个完成这项工作的 Perl 脚本:
输出:
Here is a Perl script that does the job:
output:
我会使用
awk
:/
上分割NF
是最后一列的索引,$NF
是最后一列的索引列本身和$(NF-2)
倒数第三列。当然,您可能首先需要过滤掉输入中不是路径的行(例如使用
grep
然后通过管道传输到awk
)I'd use
awk
:/
NF
is the index of the last column,$NF
the last column itself and$(NF-2)
the 3rd-to-last column.You might of course first need to filter out lines in your input that are not paths (e.g. using
grep
and then piping toawk
)像这样的正则表达式应该可以解决问题:(
请注意,我正在使用惰性搜索(
+?
和*?
),这样它就不会包含我们所用的斜杠不希望这样)a regular expression something like this should do the trick:
(note I'm using lazy searches (
+?
and*?
) so that it doesn't includes slashes where we don't want it to)