awk를 사용하여 주어진 인덱스의 단어를 다음과 같이 인쇄 할 수 있습니다.
$ echo "The quick brown fox jumps over the lazy dog" | awk '{print $3, $7}'
brown the
그러나 "brown"과 "the"라는 지정된 단어 사이의 텍스트도 가져오고 싶습니다. 그래서 나는 출력이 그렇게되기를 원합니다.
brown fox jumps over the
awk를 특별히 사용할 필요는 없지만 단어의 인덱싱 및 토큰 화는 awk를 사용하는 쉘 스크립트의 다른 부분과 일관성을 유지하기 위해 awk와 일치해야합니다.
첫 번째 색인에서 마지막 색인으로 단어를 인쇄하는 것을 고려했지만 단어 사이의 공백을 유지하지 않습니다.
이것을 복잡하지만 더 정확한 방법으로 표현하기 위해 색인으로 지정된 일부 단어의 시작에서 시작하고 다른 색인에서 지정된 다른 단어의 끝에서 끝나는 텍스트를 얻고 싶습니다. 어떻게 할 수 있습니까 (바람직하게는 bash 루프없이)?
으로 gawk
, 당신은 사용할 수있는 split()
필드와 자신의 구분을 결정하기 위해 기능 :
$ echo "The quick brown fox jumps over the lazy dog" | awk '{ split($0, a, "\\s+", s); for (i = 3; i <= 7 && i <= length(a); i++) printf "%s%s", a[i], (i < 7 ? s[i] : "\n") }'
brown fox jumps over the
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다