最后一行出现在一行中

时间:2012-08-30 16:19:03

标签: sed awk

我是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,然而,这对于我第一天尝试学习这些东西似乎有点先进。提前谢谢。

4 个答案:

答案 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