从最新/到行尾排除数据

时间:2019-10-29 09:45:13

标签: linux awk sed grep

我的输入文件(myfile)为:

/data/152.18224487:2,S/proforma invoice.doc
/data/152.916612:2,/proforma invoice.doc
/data/152.48152834/Bank T.T Copy 12 d3d.doc
/data/155071755/Bank T.T Copy.doc
/data/1521/Quotation Request.doc
/data/15.462/Quotation Request 2ds.doc
/data/15.22649962_test4/Quotation Request 33  zz (.doc
/data/15.226462_test6/Quotation Request.doc   

并且我需要将最后一个“ /”之后的所有数据排除在该行的末尾,以产生以下输出:

/data/152.18224487:2,S
/data/152.916612:2,
/data/152.48152834
/data/155071755
/data/1521
/data/15.462
/data/15.22649962_test4
/data/15.226462_test6

如何从命令行linux做到这一点?

这是与extract last section of data from file using linux command

相关的后续问题

4 个答案:

答案 0 :(得分:2)

尝试

sed 's:/[^/]*$::' < inputfile > outputfile

您在其他地方的评论中说,您只需在最后一个斜杠后剩下的,所以我们开始:

sed 's:^.*/::' < inputfile > outputfile

答案 1 :(得分:2)

请您尝试以下。

awk 'match($0,/\/.*\//){print substr($0,RSTART,RLENGTH-1)}' Input_file

//的最后一次出现,直到您的Input_file可以以/以外的其他名称启动,然后尝试执行以下操作。

awk 'match($0,/.*\//){print substr($0,RSTART,RLENGTH-1)}' Input_file

答案 2 :(得分:2)

这与您的previous question 结合在一起, 即。数据:

>> Vi 'x' found in file /data/152.916612:2,/proforma invoice.doc
>> Vi 'x' found in file /data/152.48152834/Bank T.T Copy 12 d3d.doc
>> Vi 'x' found in file /data/155071755/Bank T.T Copy.doc
...

wwk:

$ awk '
(s=match($0,/found in file /)+RLENGTH) && (match(substr($0,s),/.*\//)) {
    print substr($0,s,RLENGTH-1)
}' file

输出:

/data/152.18224487:2,S
/data/152.916612:2,
/data/152.48152834
...

答案 3 :(得分:1)

awk -F/ '{print "/"$1$2"/"$3}' file 

/data/152.18224487:2,S
/data/152.916612:2,
/data/152.48152834
/data/155071755
/data/1521
/data/15.462
/data/15.22649962_test4
/data/15.226462_test6