제공된 정보의 범위를 감안할 때 이것은 다양한 도구를 사용하여 정말 쉬운 작업입니다.
$ awk '$1=="Hardware"{print $5}' sample.txt
Awk는 표현식에 일치하는 것을 찾은 다음 공백으로 구분 된 입력란을 구분합니다. $1
이 첫 번째 단어이고 $5
은 다섯 번째 "단어"입니다.
$ sed -ne '/^Hardware/s/[^0-9]//gp' sample.txt
sed 명령은 특정 정규식과 일치하는 행에서 명령을 실행할 수도 있습니다. 이 경우, "Hardware"라인의 경우, 모든 숫자가 아닌 문자를 null로 대체합니다. 숫자는 분명히 숫자입니다. 이것은 필드가 아닌 유형별로 구분됩니다. (당신은 당신이 달성하려고했는지 언급하지 않았다.) 마지막으로
를 실행 한 다음, 외부 도구를 사용하지 않고
$ readarray -t stuff < sample.txt
$ for line in "${stuff[@]}"; do this=($line); test "${this[0]}" = "Hardware" && echo "${this[4]}"; done
이 혼자 떠들썩한 파티를 사용하여 라인을 찾습니다. 이러한 종류의 배열 참조는 Bourne 스타일의 이전 쉘에서는 작동하지 않습니다. 그러나 리눅스 나 OSX를 사용하고 있다면 쉘은 기본적으로 bash가 될 가능성이 높습니다.
"${this[4]}"
에 대해 궁금한 점이 있으면 bash 배열은 0부터 번호가 매겨지기 때문에 awk 줄은 $1
에서 시작하여 단어가 분할되기 때문에 "4"가됩니다.
우리는 non-bash 쉘에서도이 작업을 수행 할 수 있지만 더 많은 작업이 필요하며 아마도 한 줄의 작업이 아닐 수도 있습니다.
무엇을 시도 했습니까? 우리에게 당신의 일을 보여 주면 버그 수정에 도움을 줄 것입니다. 그리고 샘플 입력에서 * "하드웨어"라인의 다른 가능한 값은 무엇입니까? * – ghoti