
내 단어가 접두사이거나 해당 줄이 내 단어의 접두사인 파일의 모든 줄을 일치시키고 싶습니다. 예를 들어 "abc"를 검색하면 다음과 일치해야 합니다.
aab
abc abcd abcxyz
하지만:
xabc
zzab
xaz
"내 단어는 다음의 접두사입니다" 부분은 쉽습니다. ^abc
물론 " "만 일치시키면 됩니다. 하지만 "행은 내 단어의 접두사입니다" 비트에 대한 해결책을 찾지 못했습니다. awk에서 뭔가를 시도했지만 줄 내용을 정규식의 일부로 만들 수 없었습니다.
답변1
처리해야 할 두 가지 경우가 있습니다. 행이 검색 문자열보다 짧거나 긴 경우입니다.
길이가 더 길면 줄의 시작 부분이 테스트 문자열과 같은지 테스트하고 싶을 것입니다.
길이가 더 짧으면 검색 문자열의 시작 부분이 해당 줄과 같은지 테스트하고 싶을 것입니다.
길이가 동일한 경우 두 방법 중 하나가 작동합니다.
awk -v search=abc 'length() > length(search) ? substr($0, 1, length(search)) == search : substr(search, 1, length()) == $0' inputfile