awk: 문자열로 시작하고 문자열로 끝나는 줄 선택

awk: 문자열로 시작하고 문자열로 끝나는 줄 선택

input.txt가 있어요

abcd
abcg

"a"로 시작하고 "g"로 끝나는 줄을 선택하려면 다음과 같이 작성했습니다.

cat input.txt | awk '/^a/' | awk '/g$/{print $0}'

정규식을 결합 ^a하고 g$하나의 인스턴스만 사용할 수 있는 방법은 무엇입니까 awk?

답변1

시작과 끝이 일치하는 정규식을 사용하세요.

awk '/^a.*g$/' input.txt

또는 정말로 두 가지를 모두 사용하고 싶다면 다음과 같이 결합할 수 있습니다 &&.

awk '/^a/ && /g$/' input.txt

답변2

awk는 필요 없고 grep만 사용하면 됩니다.

grep "^a.*g$" input.txt

답변3

가능한 한 일반적인 답변을 얻으려면 다음을 사용하십시오., 이는 원하는 작업을 수행하는 또 다른 방법입니다.문자열은 다음과 같이 전달됩니다.명령줄에서.

이 예에는 데모 테스트 데이터가 포함되어 있습니다.

스크립트 사용

#!/bin/sh

sSTRT="${1}"
sEND="${2}"

echo "John Wells
John Wayne
Robert Wayne" |
awk -v sTrt="^${sSTRT}" -v sEnd="${sEND}\$" ' $0 ~ sTrt && $0 ~ sEnd '

그리고 명령을 실행

script "John" "Wayne"

출력은 다음과 같습니다

John Wayne

다른 줄은 무시하세요.

특별 참고 사항: "^"abd"$"는 awk 변수의 일부로 그대로 전달되어야 합니다.

관련 정보