使用 sed 删除包含文件路径的行

使用 sed 删除包含文件路径的行

我的文件中有一个如下所示的行列表:

6642a51e0ed5e6f89e5e4090b9aa0fb3  /home/device/eth0/uid
d66d1417251a9a151176c34acf046878  /home/device/eth0/uid64
db5c3c9d348ce26169c56901a7606961  /home/device/eth1/dhcp
226c1a53543bddcca5d136fdd5700f4c  /home/device/eth1/ipv4
13b376c06f904b607c2a23bd76115595  /home/device/eth1/netmask

我想从此文件中删除某些行,不带任何空行。

我发现sed这是合适的命令,尽管我尝试了几种方法并查看了其他人的工作,但我仍然不知道该怎么做。

这就是我所拥有的sed -i "s|'/home/device/pn'|d" TestRun.chk

但它不起作用......我读过有关如何打破斜杠以及如何不使用它的文章。我只是不知道这是否适合我的情况。

非常感谢您的帮助!

编辑:

输入示例:

6642a51e0ed5e6f89e5e4090b9aa0fb3  /home/device/eth0/uid
d66d1417251a9a151176c34acf046878  /home/device/eth0/uid64
db5c3c9d348ce26169c56901a7606961  /home/device/eth1/dhcp
226c1a53543bddcca5d136fdd5700f4c  /home/device/eth1/ipv4
13b376c06f904b607c2a23bd76115595  /home/device/eth1/netmask

运行sed命令以删除/home/device/eth1/ipv4预期输出后:

6642a51e0ed5e6f89e5e4090b9aa0fb3  /home/device/eth0/uid
d66d1417251a9a151176c34acf046878  /home/device/eth0/uid64
db5c3c9d348ce26169c56901a7606961  /home/device/eth1/dhcp
13b376c06f904b607c2a23bd76115595  /home/device/eth1/netmask

答案1

使用sed,您可以执行以下操作:

$ sed -i '\| pattern to match |d' File

这将删除pattern to matchFile 中包含的行。

使用 grep,您可以执行以下操作:

$ echo "$(grep -v "pattern to match" File)" > File

-v选项允许 grep 不包含 的行pattern to match,然后将其重定向回 File。

答案2

正如我所看到的,您的文件包含特殊字符/您可以使用此命令删除任何行,您应该指定每行的字符串特征,例如第二行是“uid64”:

sed -i '\|uid64|d' testRun.chk
In my pc it's print this without blank line :
6642a51e0ed5e6f89e5e4090b9aa0fb3  /home/device/eth0/uid
db5c3c9d348ce26169c56901a7606961  /home/device/eth1/dhcp
226c1a53543bddcca5d136fdd5700f4c  /home/device/eth1/ipv4
13b376c06f904b607c2a23bd76115595  /home/device/eth1/netmask

正如您所看到的,没有第二行,您可以对下一行“ sed -i '\|ipv4|d' testRun.chk”等执行此操作。

祝你好运!

相关内容