我的输入文件(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
相关的后续问题答案 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