Bash 用于在数据库中搜索名称的脚本

Bash script to search for a name in a database

我有一个包含多个 .txt 文件的数据库,我需要在所有这些 txts.[= 中自动搜索特定名称15=]

Terminal 中,我通常会 grep word:otherword /path/to/file/text1.txt 并获得所有结果的列表。

我怎样才能自动执行所有操作,以便脚本询问我 "Insert Word" 然后 "Insert OtherWord" 然后它搜索所有文件都给我一个干净的结果 "Word OtherWord"?

编辑 1:

截至目前的代码

#!/bin/bash

    read -p "Insert Word: " insertWord
    read -p "Insert OtherWord: " insertOtherWord
    printf "Executing grep ${insertWord}:${insertOtherWord} $(find path/to/file/name.txt -name '*.txt')"
    grep "${insertWord}:${insertOtherWord}" $(find path/to/file/name.txt -name '*.txt')

编辑 2:

#!/bin/bash

read -p "word3: " word3
read -p "word4: " word4
read -p "word1: " word1
read -p "word2: " word2
printf "Searching for ${word1}:${word2}:${word3}:${word4} $(find path/to/file -name '*.txt')"
grep -i -w "${word1}:${word2}:${word3}:${word4}" $(find path/to/file -name '*.txt') | cut -d":" -f2-

给定更新的脚本 EDIT2 并且给定 word2 是一组可变长度号码,有没有办法:

  1. 搜索,或者 word1 或两个或所有这些
  2. word2 不是必需的,但如果我不添加它,搜索就不会 运行; 试图添加一个通配符 * 但它给了我一个错误

输出示例为:

word1:numbervariablelenght:word3:word4

这个..

#!/bin/bash

read -p "Insert Word : " insertWrod
read -p "Insert OtherWord : " insertOtherWord
printf "Executing grep ${insertWrod}:${insertOtherWord} $(find . -name '*.txt')"
grep "${insertWord}:${insertOtherWord}" $(find . -name '*.txt')

P.S - 根据需要调整 grep 选项

编辑

您可以替换命令中的路径,如果您想避免格式为 path/to/file/file.txt:word:otherword 的输出行的路径,您可以执行 cut 例如

#!/bin/bash

read -p "Insert Word : " insertWrod
read -p "Insert OtherWord : " insertOtherWord
read -p "Path : " somePath

# Make Sure Path exists and its a directory
if [ -d "$somePath" ] then
    grep "${insertWord}:${insertOtherWord}" $(find $somePath -name '*.cpp') | cut -d":" -f2- 
fi