문자열의 일부 비교

문자열의 일부 비교

리눅스 초보자를 도와주세요!

두 가지 다른 이미지의 lsinitrd 출력을 비교하고 싶습니다. 예를 들어 일부 줄은 다음과 같습니다.

-rw-r--r--   1 root     root         2146 Aug  1 01:00 usr/lib/modules/5.18.12-1-default/kernel/lib/crypto/libchacha.ko.zst

-rw-r--r--   1 root     root         2165 Oct 14 16:58 usr/lib/modules/6.0.7-1-default/kernel/lib/crypto/libchacha.ko.zst

둘 다 동일한 파일의 다른 버전을 참조하므로 해당 버전을 무시하고 한 출력에는 있지만 다른 출력에는 누락된 파일만 고려하고 싶습니다.

어떻게 해야 하나요?

답변1

다음과 같이 보일 수 있습니다:

v1="5.18.12-1-default"
v2="6.0.7-1-default"
diff \
  <(lsinitrd -k "$v1" | grep ' usr/lib/modules/' | sed -e 's#usr/lib/modules/[^/]*#usr/lib/modules/version#' -e 's/^.* //') \
  <(lsinitrd -k "$v2" | grep ' usr/lib/modules/' | sed -e 's#usr/lib/modules/[^/]*#usr/lib/modules/version#' -e 's/^.* //') \
| grep '^[<>]'

user로 시작 root하거나 lsinitrd각 명령 앞에 sudocommand를 붙입니다.

내 버전을 사용하면 다음과 같은 결과를 얻습니다.

> usr/lib/modules/version/kernel/drivers/net/mii.ko.xz
> usr/lib/modules/version/kernel/drivers/net/usb
> usr/lib/modules/version/kernel/drivers/net/usb/r8152.ko.xz
> usr/lib/modules/version/kernel/drivers/net/usb/usbnet.ko.xz
> usr/lib/modules/version/kernel/drivers/net/veth.ko.xz
> usr/lib/modules/version/kernel/net/802
> usr/lib/modules/version/kernel/net/802/stp.ko.xz
> usr/lib/modules/version/kernel/net/bridge
> usr/lib/modules/version/kernel/net/bridge/bridge.ko.xz
> usr/lib/modules/version/kernel/net/llc
> usr/lib/modules/version/kernel/net/llc/llc.ko.xz

고쳐 쓰다

버전 ID를 출력에 포함하려면 grep명령과 해당 인수를 다음으로 바꾸십시오 awk.

awk -v v1="$v1" -v v2="$v2" '$0 !~ /^[<>]/ {next} /^>/ {sub("/version/", "/" v1 "/"); print} /^</ {sub("/version/", "/" v2 "/"); print}'

내 결과:

> usr/lib/modules/6.0.5-200.fc36.x86_64/kernel/drivers/net/mii.ko.xz
> usr/lib/modules/6.0.5-200.fc36.x86_64/kernel/drivers/net/usb
> usr/lib/modules/6.0.5-200.fc36.x86_64/kernel/drivers/net/usb/r8152.ko.xz
> usr/lib/modules/6.0.5-200.fc36.x86_64/kernel/drivers/net/usb/usbnet.ko.xz
> usr/lib/modules/6.0.5-200.fc36.x86_64/kernel/drivers/net/veth.ko.xz
> usr/lib/modules/6.0.5-200.fc36.x86_64/kernel/net/802
> usr/lib/modules/6.0.5-200.fc36.x86_64/kernel/net/802/stp.ko.xz
> usr/lib/modules/6.0.5-200.fc36.x86_64/kernel/net/bridge
> usr/lib/modules/6.0.5-200.fc36.x86_64/kernel/net/bridge/bridge.ko.xz
> usr/lib/modules/6.0.5-200.fc36.x86_64/kernel/net/llc
> usr/lib/modules/6.0.5-200.fc36.x86_64/kernel/net/llc/llc.ko.xz

관련 정보