如何在用户输入中使用sed

时间:2011-08-15 15:15:50

标签: unix scripting

脚本执行两件事

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 expression#1,char 3:命令后的额外字符”

如何纠正它?

2.我可以将'find'的输出重定向到变量

例如

$ flloc = / tmp / newone.txt

所以我将能够使用'$ flloc'而不是绝对路径

1 个答案:

答案 0 :(得分:0)

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.