我有一个名为temp.lst的文件,其内容如下:
1,13d0
< /hello/ux/PH/src/DEMO/dir/web/HelloWorld.java
< /hello/ux/PH/src/USOURCES/java/frame/contain/ProcessResult.js
< /hello/ux/PH/src/DEMO/dir/web/Hello.java
< /hello/ux/PH/src/USOURCES/dir/web/World.java
< /hello/ux/PH/src/USOURCES/dir/web/Hey.java
我只需要那些拥有&#34; USOURCES&#34;并丢弃之前的所有内容&#34; USOURCES&#34;。这需要转储到另一个文件中,比如final.lst。
所以,final.lst将是:
USOURCES/java/frame/contain/ProcessResult.js
USOURCES/dir/web/World.java
USOURCES/dir/web/Hey.java
我尝试使用cut命令,但这不是很通用。请帮忙,因为我是unix的新手。
答案 0 :(得分:1)
sed -n 's@.*/USOURCES@USOURCES@p' temp.lst
-n
表示除非最后由p
明确告知,否则不要打印。其余的只是从匹配和打印它们的行中删除。
答案 1 :(得分:1)
您可以使用grep
option -o
和glob。
grep -o 'USOURCES.*' /tmp/so.txt
输出:
USOURCES/java/frame/contain/ProcessResult.js USOURCES/dir/web/World.java USOURCES/dir/web/Hey.java
-o, - 仅匹配
Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.
答案 2 :(得分:1)
使用awk
:
awk -F'USOURCES' 'NF>1{print FS $2}' temp.lst > final.lst