我想在找到关键字后修剪超过某个点的路径名。我今天早上画空了。
/home/quikq/1.0/dev/Java/tsupdater/src/tsupdater.java
我想找到关键字Java,保存超出该值的路径名(tsupdater),然后在Java
部分之后关闭所有内容。
答案 0 :(得分:3)
我不知道这是否是您想要的,但您可以将路径名拆分为两个:
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/}"
希望这有助于=)
答案 1 :(得分:1)
我不完全确定你想要的输出(请更清楚地说明),但是这个命令:
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/
答案 2 :(得分:1)
拿一个你需要的:
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
答案 3 :(得分:0)
就像我说的那样,我有一个奇怪的早晨,但我突然明白了。
echo /home/quikq/1.0/dev/Java/TSUpdater/src/TSUpdater.java | sed s / Java。* // g
产量
/home/quikq/1.0/dev
这里有很多很棒的提示,可以用不同的方法来切割它。非常感谢!