.txt 파일에서 지정된 문자열(2~3단어)을 가져와 전체 줄을 인쇄합니다. [복사]

.txt 파일에서 지정된 문자열(2~3단어)을 가져와 전체 줄을 인쇄합니다. [복사]

.txt파일에는 다음 내용이 포함되어 있습니다.

The Law and Lawyers of Pickwick, by Frank Lockwood                 21214
Frankenstein, by Mary Wollstonecraft                               20

첫 번째 문자열은 책 제목, 두 번째 문자열은 저자, 마지막 문자열은 책 번호입니다. 누군가 저자 이름을 사용하여 검색하면 전체 줄을 인쇄하고 싶습니다. grep을 사용해 보았습니다.

#!/bin/bash
BOOKFILE="/home/sk/GUTINDEX.ALL"
author=$1
if [[ -z "$author" ]]; then 
echo -n "Author name : "
read author
fi
grep $author $BOOKFILE

이것을 실행해서 검색하면프랭크 록우드이 두 줄을 인쇄합니다. 하지만 전체 입력 문자열(이름과 성)이 일치하면 해당 줄을 인쇄하고 싶습니다.

답변1

다음과 같이 변경해야 합니다.

#!/bin/bash
BOOKFILE="/home/sk/GUTINDEX.ALL"
author=$@
if [[ -z "$author" ]]; then 
    read -rp "Author name: " author
fi
grep "$author" "$BOOKFILE"

다음과 같이 실행하면:

$ ./script Frank Lockwood

위치 매개변수 1을 로 Frank, 매개변수 2를 로 설정하고 있습니다 Lockwood. 매개변수 2는 스크립트에서 사용되지 않습니다. $@모든 위치 매개변수를 나타내는 배열입니다.

read또한 변수를 공백이 포함된 문자열로 설정하도록 허용하면 authorgrep 행은 따옴표 없이 실패합니다 author.

관련 정보