Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 从文本文件的每一行中删除当前路径部分_Bash_Shell_Scripting - Fatal编程技术网

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

Bash 从文本文件的每一行中删除当前路径部分,bash,shell,scripting,Bash,Shell,Scripting,我有一个生成文本文件的bash脚本。但我想从每一行中删除当前路径部分。我试着运行“cut-d”/ --补充-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/s

我有一个生成文本文件的bash脚本。但我想从每一行中删除当前路径部分。我试着运行“cut-d”/ --补充-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
使用sed,您可以执行以下操作:

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

dir/file1.c
dir/subdir/file2.h
dir2/file3.txt
如果当前路径保存在变量
p
中,则使用:

sed "s~^$p~~" file

您可以使用
PWD
bash
参数展开来获得动态行为:

"${var#$PWD/}"
首先将文件路径另存为
var
。在这里,
$PWD
将扩展到当前工作目录,参数扩展将获得文件名在
$PWD
之后的部分

示例:

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

谢谢@anubhava。它很好用。但它在开始时仍然会有一个额外的斜杠,我在回答中已经显示了sed的输出,但没有任何前导斜杠。确保变量
p
中有尾随斜杠。是。我在路径变量中添加了反斜杠。现在它运行良好。谢谢你的帮助。谢谢@heemail的及时回复和帮助。