식별자에서 숫자 값을 분리하는 방법

식별자에서 숫자 값을 분리하는 방법

저는 현재 식별자(grep에서 검색)에서 값을 분리하는 쉘 스크립트를 작성 중입니다.

예를 들어 특정 파일을 grep하면 다음 정보를 검색합니다.

value1 = 1
value2 = 74
value3 = 27

정보를 얻고 이를 다음 형식으로 변환하는 데 사용할 수 있는 UNIX 명령이 무엇인지 알고 싶습니다.

1 74 27

답변1

당신은 그것을 사용할 수 있습니다이와 같이:

grep "pattern" file.txt | awk '{printf "%s ", $3}'

용도에 따라 다르지만 다음 용도 로 grep사용하는 것을 고려해야 합니다 .awkgrep그 자체:

awk '/pattern/{printf "%s ", $3}' file.txt

또 다른 방법은 분사:

echo $(awk '/pattern/{print $3}' file.txt)

편집하다: 좀 더 흥미로운 방법이 있어요가입하다값:

awk '/pattern/{print $3}' file.txt | paste -sd " " -

답변2

첫 번째 공백과 다음 공백까지 모든 것을 제거하고 =줄 바꿈을 공백으로 변환하고 마지막 줄 바꿈을 인쇄합니다.

… | sed 's/^[^=]*= *//' | tr '\n' ' '; echo

답변3

좀 더 간단한 건 어때요?

cut -d= -f2 /tmp/file | xargs printf "%s "

이는 다음과 같은 이유로 작동합니다.

  1. 쉘 내장 "printf"는 출력 문자열에 지정된 것보다 더 많은 인수를 얻으면 "자체 반복"됩니다.
  2. xargs는 입력의 줄을 printf에 전달된 명령줄의 단어로 변환합니다.
  3. cut은 =를 구분 기호로 사용하고 그 뒤에 오는 내용만 전달합니다.
  4. 물론 printf 문자열은 출력을 표시하며 명시적인 새 줄이 추가되지 않으므로 각 문자열은 이전 줄의 끝에 추가됩니다.

관련 정보