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 matchこれにより、ファイルに含まれている行が削除されます。

grepを使用すると、次のことができます。

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

この-vオプションを使用すると、含まれていない行に対してgrepを許可してから、pattern to match再びFileにリダイレクトできます。

答え2

ご覧のとおり、ファイルに特殊文字が含まれています。このコマンドを使用してすべての行を削除できます。各行の文字列属性を指定する必要があります。たとえば、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

ご覧のとおり、2行目はありません。sed -i '\|ipv4|d' testRun.chk次の行 ""などに対してこれを行うことができます。

頑張ってください!

関連情報