Хорошо, теперь я понял, я думаю.Это должно помочь вам начать.
#!/bin/bash
document="documentToSearchIn.txt"
grep -v spacer fileWithSearchStrings.txt | while read srchstr ; do
echo "Searching for $srchstr in $document"
echo agrep -3 "$srchstr" "$document"
done
Если это выглядит правильно, удалите echo
перед agrep
и запустите снова.
Если, как вы говорите в комментариях, вы хотите сохранить скрипт где-то еще, скажем, в $HOME/bin
, вы можете сделать это:
mkdir $HOME/bin
Сохранить скрипт выше как $HOME/bin/search
.Теперь сделайте его исполняемым (необходимо только один раз) с помощью:
chmod +x $HOME/bin/search
Теперь добавьте $HOME/bin
к своему PATH.Итак, найдите строку, начинающуюся с:
export PATH=...
в вашем профиле входа в систему, и измените ее, включив в нее новый каталог:
export PATH=$PATH:$HOME/bin
Затем запустите новый терминал, и вы сможетепросто запустите:
search
Если вы хотите указать имя файла строк и документа для поиска, вы можете изменить код на:
#!/bin/bash
# Pick up parameters, if supplied
# 1st param is name of file with strings to search for
# 2nd param is name of document to search in
str=${1:-""}
doc=${2:-""}
# Ensure name of strings file is valid
while : ; do
[ -f "$str" ] && break
read -p "Enter strings filename:" str
done
# Ensure name of document file is valid
while : ; do
[ -f "$doc" ] && break
read -p "Enter document name:" doc
done
echo "Search for strings from: $str, searching in document: $doc"
grep -v spacer "$str" | while read srchstr ; do
echo "Searching for $str in $doc"
echo agrep -3 "$str" "$doc"
done
Затем вы можете запустить:
search path/to/file/with/strings path/to/document/to/search/in
или, если вы запустите так:
search
, он запросит у вас 2 имени файла.