从文本文件中的每一行删除当前路径部分

时间:2016-07-29 20:47:26

标签: bash shell scripting

我有一个生成文本文件的bash脚本。但我想从每一行删除当前路径部分。我试着跑#34; 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

2 个答案:

答案 0 :(得分:1)

使用sed你可以这样做:

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

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

如果当前路径保存在变量p中,请使用:

sed "s~^$p~~" file

答案 1 :(得分:0)

您可以使用PWDbash参数扩展来获取动态行为:

"${var#$PWD/}"

首先将文件路径保存为var。此处$PWD将扩展到当前工作目录,参数扩展将获取$PWD之后的文件名部分。

示例:

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