2016-07-29 101 views
1

我有一個生成文本文件的bash腳本。但是我想刪除每行的當前路徑部分。我試圖運行「cut -d'/' --complement -s -f1-4」命令。但我想要一些動態的方式來做到這一點。有人可以幫助我嗎?謝謝 !刪除文本文件中每行的當前路徑部分

示例文本文件:

/local/name1/test/dir/file1.c 
/local/name1/test/dir/subdir/file2.h 
/local/name1/test/dir2/file3.txt 

當前路徑:

/local/name1/test/ 

預期結果:

dir/file1.c 
dir/subdir/file2.h 
dir2/file3.txt 

回答

1

使用Sed則可以這樣做:

sed 's~^/local/name1/test/~~' file 

dir/file1.c 
dir/subdir/file2.h 
dir2/file3.txt 

如果您當前的路徑保存在一個變量p然後使用:

sed "s~^$p~~" file 
+0

由於@anubhava。它工作正常。但它在開始時仍然會有一個額外的斜線。 – Rock26

+0

我已經在我的答案中顯示了sed的輸出,並且我沒有得到任何前導斜槓。確保在變量'p'中有一個尾部斜線。 – anubhava

+1

是的。我在我的路徑var中添加了斜槓。現在它工作正常。謝謝你的幫助。 – Rock26

0

您可以使用PWDbash參數擴展得到的動態行爲:

"${var#$PWD/}" 

另存爲var第一個文件路徑。這裏$PWD將展開到當前的工作目錄,參數展開後將獲得$PWD之後的部分文件名。

實施例:

$ var=/home/foobar/spam/foo/bar.c 
$ echo "${var#$PWD/}" 
foo/bar.c 
+0

謝謝@heemayl的及時回覆和幫助。 – Rock26