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 변수의 일부로 그대로 전달되어야 합니다.