Shell脚本:获取文件路径,直到某些所需的文本

时间:2015-08-10 09:29:08

标签: shell

我需要一种方法来获取所需的文件路径,如下所述:

示例:

文件路径:(所需输入)

Map<K,C>

现在,我想将路径打印到import win32gui, win32api, win32con, time def clickMouse(): print('Clicking Mouse') flags, hcursor, (mousex,mousey) = win32gui.GetCursorInfo() win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,mousex,mousey,0,0) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,mousex,mousey,0,0) while 1: print('Looping') if win32api.GetAsyncKeyState(ordz('Z')): clickMouse() time.sleep(0.5) 目录。

喜欢:(预期输出)

/root/tmp/uname/abc.txt  

/root/tmp/uname/abc/abc.txt

/root/uname/abc.txt 

需要提取路径直到任何所需的目录。

2 个答案:

答案 0 :(得分:1)

变量替换${var%pattern}生成var的值,并删除了匹配pattern的后缀。

for p in /root/tmp/uname/abc.txt /root/tmp/uname/abc/abc.txt /root/uname/abc.txt
do
    echo "${p%/uname*}/uname"
done

还有${var#pattern}删除任何匹配的前缀。

如果路径位于文件中,请使用while read代替for循环。

while read -r p; do
    echo "${p%/uname*}/uname"
done <file

......虽然在这种情况下,sed 's%\(/uname\)/.*%1%' file会更简单,更快捷。

答案 1 :(得分:0)

假设文件temp1.txt包含

 root@nviewsrvr ~Competitive ] cat temp1.txt
/root/tmp/uname/abc.txt

/root/tmp/uname/abc/abc.txt

/root/uname/abc.txt

以下脚本从此文件中获取输入并为您提供所需的结果。

#!/bin/bash

 cat temp1.txt|while read LINE
 do
    for p in `echo ${LINE}`
    do
        echo "${p%/uname*}/uname"
    done
 done

结果:

[xvishuk@ecamolx1820 ~/Competitive]$ ./forUname.sh
/root/tmp/uname
/root/tmp/uname
/root/uname

我已将文件硬编码为temp1.txt,您可以将它们作为参数传递给脚本。