Как использовать sed с пользовательским вводом - PullRequest
0 голосов
/ 15 августа 2011

Сценарий выполняет две вещи

1.Включает пользователю ввод имени файла

2.Вводит пользователю возможность ввести номер строки для просмотра содержимого

echo "Enter the file name"
read fname
  find / -name "$fname" > /tmp/newone.txt

if test $? -eq 0
then
 {
  echo "File found"
  echo "The no of line in the file $fname is `cat /tmp/newone.txt | wc|awk '{pri
nt $1}'`"
  echo  "Enter the line no"
  read  lcnt
  sed '"$lcnt" p' "$fname"
 }
else
 {
   echo "File not found"
 }
fi

Проблема 1. Получение ошибки в части sed

Сообщение об ошибке "sed: -e выражение # 1, символ 3: дополнительные символы после команды"

как ее исправить?

2.Можно ли перенаправить вывод 'find' в переменную

Например,

$ flloc = / tmp / newone.txt

, чтобы я смогиспользовать '$ flloc' вместо абсолютного пути

1 Ответ

0 голосов
/ 15 августа 2011

1) Вот как вы должны использовать свою переменную в команде sed:

echo "Line no: "
read lcnt

sed -n "$lcnt p" $fname

Что не так с вашим исходным выражением, так это то, что переменные bash не интерпретируются, когда вы используете одинарные кавычки,Пример:

lcnt=5

# prints $lcnt
echo '$lcnt'

# prints 5
echo "$lcnt"

2) Чтобы сохранить результаты поиска в переменной, просто сделайте это:

floc=`find / -name $fname` # Here I'm using backticks, not single quotes.
...