В качестве нового ie в сценариях оболочки bash я пытаюсь понять, как справиться с 3 различными ситуациями с помощью grep. В этом скрипте у меня есть два параметра (один текстовый файл, одна переменная). В этом скрипте мне нужно:
1) найти и показать номер каждой строки, которая начинается с данной переменной
2) найти и показать номер каждой строки, содержащей данную переменную
3) найти и показать номер каждой строки, которая заканчивается заданной переменной
Текстовые данные:
unix is great os. unix is opensource. unix is free os.
learn operating system.
Unix linux which one you choose.
uNix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.
Написанный сценарий:
#!/bin/bash
echo "Give a string."
read variable
file="/home/mikepnrs/data.txt"
grep -n "^$variable" $file
echo "Lines starting with: $variable" grep -c "^$variable" $file
grep -n "$variable" $file
echo "Lines containing : $variable" grep '$[variable]*$' file
grep -n "$variable$" $file
echo "Lines ending with : $variable" grep -c "$variable$" file
Учитывая "un" в качестве аргумента переменной, я получаю следующие результаты. Первый ответ, кажется, работает нормально, но я не могу понять, что делаю не так с остальными.
1:unix is great os. unix is opensource. unix is free os.
Lines starting with : un grep -c ^un /home/mikepnrs/data.txt
1:unix is great os. unix is opensource. unix is free os.
4:uNix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.
Lines containing : un grep $[variable]*$ file
Lines ending with : un grep -c un$ file
Есть мысли?