Linux - 删除文件中包含当前工作目录的行

问题描述 投票:0回答:1

这基本上可以归结为“如何组合 pwd 和 sed delete(或替代方案)”。 给定一个包含文件路径列表的文件,如何删除包含当前目录的行?

因此,如果 file1 包含:

/dirA/subdir1/somefile
/dirB/subdir2/somefile
/dirB/subdir2/somefile
/dirC/subdir2/somefile
/dirD/subdir1/somefile

我的工作目录是:

/dirB/subdir2/

然后我的输出应就地编辑 file1 以产生:

/dirA/subdir1/somefile
/dirC/subdir2/somefile
/dirD/subdir1/somefile

我知道我可以使用以下命令删除行:

sed '/pattern to match/d' file1

我可以像这样将 pwd 输入到 sed 中:

sed 's?#REPLACE-WITH-PATH?'`pwd`'?'

所以我想我可以将它们组合为以下之一:

sed '/'`pwd`'/d' file1
sed '?'`pwd`'?d' file1
sed '#'`pwd`'#d' file1

第一个选项无法正确读取,因为它将路径的斜杠解释为 sed 命令的一部分。 第二个不认识问号。 第三个运行,但没有做任何事情。

linux sed text-parsing
1个回答
0
投票

/.../d
切换到
\|...|d
\#...#d
,因为当前目录包含
/

© www.soinside.com 2019 - 2024. All rights reserved.