2015-01-05 2 views
-1

고정 된 문자열과 일치 시키려면 sed을 사용해야합니다. 내가 인수 "키"를 예를 들어하지 "어이"로 사용하는 경우에만 첫 번째 라인을 얻을 수 whish 경우sed의 고정 문자열과 일치

key\x0value 
keyyy\x0value 

:

내가 좋아하는 파일에 의사의 데이터베이스를 가지고있다. * 키와 일치 : "키" * 일치하지 않음 : "k", "케", "아이", ... : 정규식 없음, 부분 검색 없음, "키"

사용할 수 없습니다. awk이고 문자열 끝에 \x0이 있어야합니다. \ x0 또는 \ 0을 처리하지 않기 때문에 grep을 사용할 수없는 것 같습니다.

문제는/^ key \ x0 /와 일치하도록 요청할 수없고 정규식으로 키를 해석하지 못하는 것입니다.

마지막으로, 내 문장은 정확한 인수를 취할 수있는 유일한 인수를 취합니다.

+2

당신이 의미하는 것이 분명하지 않습니다. 당신은 현재 출력과 원하는 것을 몇 가지 예제로 게시 할 수 있습니까? 예를 들어,'sed -n '/ key \\ x0value/p'file'라고하면'key \ x0value' ('\'를 이스케이프 할 필요가 있음을 주목하십시오)를 포함하는 줄을 출력 할 것이고, for 예'그리고 이것은 [ko] ey \ x0value' – fedorqui

+2

뭐 해봤 어? – lurker

+0

더 명확하게 편집합니다. – Arthur

답변

0

sed에는 고정 된 문자열 일치 기능이 없습니다. 하지만 일치시킬 문자열의 모든 특수 문자를 먼저 이스케이프 처리하여 동일한 효과를 얻을 수 있습니다.

#!/bin/bash 
printf -v script '/^%s\\x00/p' "$(sed 's:[]\[^$.*/]:\\&:g' <<<"$1")" 
sed -n "$script" file 

이 코드에 대한 자세한 내용은 this answer 참조 : 키가이 스크립트에 첫 번째 인수로 공급되는 경우, 해당 키가 포함 file 만 선을 인쇄합니다.

+0

고맙다. 나는이 애호가를 두려워했다. – Arthur