정규식 결과를 다른 표현식으로 사용하는 방법

정규식 결과를 다른 표현식으로 사용하는 방법

command1과 command2라는 두 개의 정규 표현식이 있고 두 표현식을 하나의 표현식으로 결합하여 |command1의 출력을 다음 표현식으로 전달해야 합니다.

명령 1:

grep 0x017a /sys/bus/pci/devices/*/device | cut -d/ -f6
>> Output : 00:00:01

명령 2:

head -n1 /sys/bus/pci/devices/00:00:01/resource | cut -d ' ' -f 1 | tail -c 9

command1을 사용하여 (00:00:01)을 command2로 출력하고 이를 단일 표현식으로 결합하려면 어떻게 해야 합니까?

답변1

한 명령의 출력을 두 번째 명령의 인수로 사용하는 메커니즘명령 대체 $()쓸 수 있는. 예를 들어:

바꾸다

$ whoami
jimmij

$ ls /home/jimmij/tmp
file1 file2

넌 할 수있어

$ ls /home/"$(whoami)"/tmp
file file2

특정 경우에는 단일 명령이 다음과 같습니다.

head -n1 "/sys/bus/pci/devices/$(grep 0x017a /sys/bus/pci/devices/*/device | cut -d/ -f6)/resource" | cut -d ' ' -f 1 | tail -c 9

나는 또한 전체 표현을 인용했습니다.여기를 읽어보세요왜 이렇게 해야 할까요?

답변2

$(command)구문(또는 이전 구문)을 사용하십시오 `command`.

DEVICE=$(grep 0x017a /sys/bus/pci/devices/*/device | cut -d/ -f6)
head -n1 "/sys/bus/pci/devices/$DEVICE/resource" | cut -d ' ' -f 1 | tail -c 9

오. "표현식으로 결합"과 유사합니다.

DEVICE=$(grep 0x017a /sys/bus/pci/devices/*/device | cut -d/ -f6)
OUTPUT=$(head -n1 "/sys/bus/pci/devices/$DEVICE/resource" | cut -d ' ' -f 1 | tail -c 9)

echo "Output is $OUTPUT"

관련 정보