AWK/SED를 사용하여 여러 문자열에서 단어 추출

AWK/SED를 사용하여 여러 문자열에서 단어 추출

Linux에서 AWK 명령을 사용하여 여러 줄에서 단어를 추출하려고 시도하고 AWK 및 SED를 사용하여 여러 가지 방법을 시도했지만 결과가 없는 논리를 찾고 있습니다.

함께 제공여기에 이미지 설명을 입력하세요.텍스트 파일이며 예상되는 출력입니다.

답변1

사용XML 스타:

xmlstarlet sel -t -m '//APPLIANCE' -v 'concat(NAME/text()," ",STATUS/text())' -nl file.xml

주어진 데이터에 대해 다음이 생성됩니다.

METASYNC Online
DELTA Offline

XML 문서에서 모든 노드를 찾고 중간 공백을 사용하여 APPLIANCE해당 값과 하위 노드를 연결함으로써 NAME이를 수행합니다 . 각각의 결과를 출력한 후 STATUS끝에 개행 문자를 삽입합니다.-nlAPPLIANCE

열 헤더와 더 나은 표 형식을 원하는 경우:

( echo 'Device_name Status'
  xmlstarlet ...as above... ) | column -t

답변2

이것을 사용하여 원하는 출력을 얻을 수 있습니다

$ echo "DEVICE-NAME STATUS" ; grep -e NAME -e STATUS <filename> | sed 's#NAME##g ; s#STATUS##g ;  s#<>## ; s#</>##' | xargs -L2 | column -t

산출:

DEVICE-NAME STATUS
METASYNC Online
DELTA OFFLINE

관련 정보