일치하는 것이 있는지 여부 만 확인해야하는 경우 모든 입력 행을 원하는 접두사 길이 ( $1
)로 자른 다음 고정 패턴 그렙을 사용하십시오.
if cut -c 1-"${#1}" | grep -qF "$1"; then
echo "found"
else
echo "not found"
fi
일치하는 줄의 수를 얻는 것도 쉽습니다.
cut -c 1-"${#1}" | grep -cF "$1"
또는 일치하는 모든 줄의 줄 번호 (줄 번호는 1부터 시작) :
cut -c 1-"${#1}" | grep -nF "$1" | cut -d : -f 1
줄 번호를 입력 head
하고 tail
일치하는 줄의 전체 텍스트를 얻을 수 있지만, 그 시점에서 Python 또는 Ruby와 같은 최신 스크립팅 언어를 사용하는 것이 더 쉽습니다.
위의 예는 Posix grep and cut을 가정합니다. 검색 할 파일이 표준 입력에서 온 것으로 가정하지만 대신 파일 이름을 사용하도록 쉽게 조정할 수 있습니다.
편집 : 또한 패턴 ( $1
)이 길이가 0이 아닌 문자열 인지 확인해야 합니다. 그렇지 않으면 cut
말을하지 values may not include zero
. 또한 Bash를 사용하는 경우을 사용 set -o pipefail
하여 오류 종료를 포착하십시오 cut
.
grep '^$1'
? 예 : ? 아니면$1
쉘이 확장되는 것을 막고 싶지 않습니까?