항목을 나타내는 콜론으로 구분 된 값의 데이터베이스 파일을 저장하는 것이 전제입니다.파일 bash에서 부분 문자열 일치 검색
var1:var2:var3:var4
이 파일을 정렬하고 값이 검색 문자열과 일치하는 줄을 추출해야합니다. 예
Search for "Help"
Hey:There:You:Friends
I:Kinda:Need:Help (this line would be extracted)
들어 는 I 출력 형식을 다른 기능으로 발견 라인을 통과 한 후, 검색 문자열을 전달하는 기능을 사용하고있어. 그러나 나는 통과 할 때 바로 형식을 얻을 수있을 것 같지 않습니다. 여기에 내가이 사이트에서 발견 한 여러 가지 방법으로 시도했습니다 샘플 코드는,하지만 그들은 내가 찾을 수있는 최초의 하나를 얻을 수없는 것
#Option 1, it doesn't ever find matches
function retrieveMatch {
if [ -n "$1" ]; then
while read line; do
if [[ *"$1"* =~ "$line" ]]; then
formatPrint "$line"
fi
done
fi
}
#Option 2, it gets all the matches, but then passes the value in a
#format different than a file? At least it seems to...
function retrieveMatch {
if [ -n "$1" ]; then
formatPrint `cat database.txt | grep "$1"`
fi
}
function formatPrint {
list="database.txt" #default file for printing all info
if [ -n "$1" ]; then
list="$1"
fi
IFS=':'
while read var1 var2 var3 var4; do
echo "$var1"
echo "$var2"
echo "$var3"
echo "$var4"
done < "$list"
}
나를 위해 작동하지 않는 것 모든 일치 두 번째 옵션은 올바른 값을 가져 오지만 formatPrint를 시도하면 전달 된 값 목록이 디렉토리가 아니라는 오류가 발생합니다.
나는 "$ line"= ~ * "$ 1"*'행운을 빈다고 생각한다. – shellter
포인트 세부 정보 (& 간결)를 제공해야합니다. 당신이 필요로하는 것이 무엇인지 알아내는 것은 어려울 것입니다. – Aman
(1) 일치하는 항목이 전체 필드 또는 부분 필드에 있어야합니까? 다시 말해, 'Hey : There : You : Friends I : Kinda : Need : Help' 문자열에 대해'He '라는 문자열이 일치해야합니까? (2) 원하는 샘플 출력을 보여주십시오? 샘플 코드는 각 필드를 별도의 줄에 넣으려고합니다. 너가 원하는게 그거야? – John1024