如何在文件中搜索字符串并打印行shell脚本

时间:2018-04-28 19:54:29

标签: bash shell

我有一个文件,里面有很多带索引号的书。

我想用索引号搜索书籍。

文件格式如下:

  

"美利坚合众国独立宣言,
  1

     托马斯杰斐逊"

     

......................

     

爱丽丝梦游仙境,刘易斯卡罗尔   11

#!/bin/bash
echo "Enter the content your are searching for:"  
read content
echo -e "\nResult Shwoing For: $content\n"
grep $content GUTINDEX.ALL

如果用户搜索1.此代码正在打印1,11每行中都有一行。我只想打印包含1的行:

  

"美利坚合众国独立宣言,1

2 个答案:

答案 0 :(得分:0)

简单使用-w标记,请在grep --help

阅读更多内容
grep -w ${line_number} ${file_name}

代表grep -w 1 books

  

美利坚合众国独立宣言1

     

Bobs在仙境中的1,作者:Lewis Carroll 11

它可能会捕获包含数字的书名, 所以最好使用正则表达式[${digit}]$,例如[1]$进行匹配 行尾的索引。

grep -w [${line_number}]$ ${file_name}

代表grep -w 1$ books

  

美利坚合众国独立宣言,1

答案 1 :(得分:0)

你需要使用正则表达式。将grep改为egrep。

文件:

1
11
111

如果您只想搜索1,那么您可以使用

cat file | egrep“^ 1 $”#意味着以1.`

开始和结束

然后你需要扩展脚本。例如  的 file.txt的

abc,1
abd,111
abf,11111

cat file.txt | while read line ; do
 res=$(echo ${line} | awk -v FS=',' '{print $2}' | grep "^1$")
 if [ $? -eq 0 ]; then
  echo $line
 fi
done