我有一个生成文本文件的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
答案 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)
您可以使用PWD
和bash
参数扩展来获取动态行为:
"${var#$PWD/}"
首先将文件路径保存为var
。此处$PWD
将扩展到当前工作目录,参数扩展将获取$PWD
之后的文件名部分。
示例:强>
$ var=/home/foobar/spam/foo/bar.c
$ echo "${var#$PWD/}"
foo/bar.c