1

找到关键字后,我想将路径名修剪到某个点之外。今天早上我在画一个空白。

/home/quikq/1.0/dev/Java/tsupdater/src/tsupdater.java

我想找到关键字Java,保存路径名(tsupdater),然后在该Java部分之后切断所有内容。

4

4 回答 4

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/}"

希望这会有所帮助=)

于 2012-10-19T14:17:04.613 回答
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
于 2012-10-19T14:22:06.123 回答
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/
于 2012-10-19T14:07:38.843 回答
0

就像我说的,我度过了一个奇怪的早晨,但我突然明白了。

回声/home/quikq/1.0/dev/Java/TSUpdater/src/TSUpdater.java | sed s/Java.*//g

产量

/home/quikq/1.0/dev

这里有很多很棒的技巧,可以用不同的方式把它切碎。非常感谢!

于 2012-10-22T16:08:05.827 回答