找到关键字后,我想将路径名修剪到某个点之外。今天早上我在画一个空白。
/home/quikq/1.0/dev/Java/tsupdater/src/tsupdater.java
我想找到关键字Java,保存路径名(tsupdater),然后在该Java
部分之后切断所有内容。
我不知道这是否是你想要的,但你可以将路径名分成两个:
echo "/home/quikq/1.0/dev/Java/tsupdater/src/tsupdater.java" | sed 'h;s/.*Java//p;g;s/Java.*/Java/'
哪个输出:
/tsupdater/src/tsupdater.java
/home/quikq/1.0/dev/Java
如果您想将第二部分保存到文件中part2.txt
并打印第一部分,您可以执行以下操作:
echo "/home/quikq/1.0/dev/Java/tsupdater/src/tsupdater.java" | sed 'h;s/.*Java//;wpart2.txt;g;s/Java.*/Java/'
如果你正在编写一个 shell 脚本:
myvar="/home/quikq/1.0/dev/Java/tsupdater/src/tsupdater.java"
part1="${myvar%Java*}Java"
part2="${myvar#*Java/}"
希望这会有所帮助=)
拿一个你需要的:
kent$ echo "/home/quikq/1.0/dev/Java/tsupdater/src/tsupdater.java"|sed -r 's#(.*Java/[^/]*).*#\1#g'
/home/quikq/1.0/dev/Java/tsupdater
kent$ echo "/home/quikq/1.0/dev/Java/tsupdater/src/tsupdater.java"|sed -r 's#(.*Java).*#\1#g'
/home/quikq/1.0/dev/Java
kent$ echo "/home/quikq/1.0/dev/Java/tsupdater/src/tsupdater.java"|sed -r 's#.*Java/([^/]*).*#\1#g'
tsupdater
我不完全确定你想要什么作为输出(请更清楚地指定),但是这个命令:
echo "/home/quikq/1.0/dev/Java/tsupdater/src/tsupdater.java" | sed 's/.*Java//'
结果是:
/tsupdater/src/tsupdater.java
如果你想要前面的部分,那么这个命令:
echo "/home/quikq/1.0/dev/Java/tsupdater/src/tsupdater.java" | sed 's/Java.*//'
结果是:
/home/quikq/1.0/dev/
就像我说的,我度过了一个奇怪的早晨,但我突然明白了。
回声/home/quikq/1.0/dev/Java/TSUpdater/src/TSUpdater.java | sed s/Java.*//g
产量
/home/quikq/1.0/dev
这里有很多很棒的技巧,可以用不同的方式把它切碎。非常感谢!