Text-Processing

對於 .txt 文件中的給定字元串(2 或 3 個字)並列印整行。

  • April 28, 2018

我的.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

如果我執行它並蒐索Frank Lockwood它會列印這兩行。但是我想在整個輸入字元串匹配時列印該行(名字和姓氏)

你應該把它改成這樣:

#!/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。 $@是一個表示所有位置參數的數組。

此外,如果您允許readauthor變數設置為帶有空格的字元串,它將在 grep 行上失敗而不加引號author

引用自:https://unix.stackexchange.com/questions/440598