我是Linux的新手,很难实现以下目标。我的每行都有一个包名称的文件。
例如:
abc/123/new/package/abc/123/new/package
abc/124/new/package/abc/123/new/package
abc/125/new/package/abc/123/new/package
abc/126/new/package/abc/123/new/package
包名称正在重复。我只需要从每行中的第二个abc开始,然后将其输出到文件中。
我曾试图阅读awk和sed,然而,这对于我第一天尝试学习这些东西似乎有点先进。提前谢谢。
答案 0 :(得分:1)
您可以使用以下sed命令:
sed -E 's#^.*(abc/.*)$#\1#g' file
答案 1 :(得分:0)
使用sed删除前4个级别:
sed 's!^[^/]*/[^/]*/[^/]*/[^/]*!!' input_file
或使用重复模式:
sed 's!^\([^/]*/\)\{4\}!/!' input_file
答案 2 :(得分:0)
这样做:
sed -E 's,^.+(abc/),\1,'input_file
答案 3 :(得分:0)
有很多方法可以做到这一点。如果要保留的文本始终位于相同的列位置(21),请使用:
cut -b 21- < input-file > output-file
如果它始终是您想要的最后一次“abc ...”,请尝试:
awk '{print FS $NF}' FS=abc input-file > output-file