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

보시다시피 파일에 특수 문자가 포함되어 있습니다. 이 명령을 사용하여 모든 줄을 삭제할 수 있습니다. 각 줄의 문자열 특성을 지정해야 합니다. 예를 들어 두 번째 줄은 "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다음 줄 " " 등에 대해 이 작업을 수행 할 수 있습니다.

행운을 빌어요!

관련 정보