我想在查找关键字后在某个点以外修剪路径名。我今天早上画了一张空白。修剪超出关键字的路径名(awk,sed,?)
/home/quikq/1.0/dev/Java/tsupdater/src/tsupdater.java
我想找到关键字的Java,保存路径超出(tsupdater),那么Java
部分切开后,关闭一切。
我想在查找关键字后在某个点以外修剪路径名。我今天早上画了一张空白。修剪超出关键字的路径名(awk,sed,?)
/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 's/.*Java//'
结果:
/tsupdater/src/tsupdater.java
如果你想在前面的部分,那么这个命令:
: 的结果
/home/quikq/1.0/dev/
关闭,但我正在寻找前面的部分,但这也很酷。谢谢! –
我不知道这是不是你想要的,但你可以在路径名分成两个:
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/}"
希望这有助于=)
'%'和'#'扩展操作符是POSIX规范的一部分,不是特定于'bash'。 – chepner
谢谢!我会修复它的答案=) –
我不应该在这个问题上标记bash。我想保持它尽可能便携。 FWIW,我正在处理AS/400“qsh”环境。 –
采取一个你需要:
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的。* // g^
息率
/home/quikq/1.0/dev
很多伟大的秘诀这里虽然砍它不同的方式。谢谢一堆!
你想要这个:'/ home/quikq/1.0/dev/Java/tsupdater'? – Kent
请显示示例名称的预期输出。 –