$ line变量在sed语句中不起作用

时间:2013-08-27 14:20:38

标签: unix sed

我试图在字符数小于9时显示行号。如果小于9,那么我想在行尾添加一个标签。 但是,在sed命令中执行此操作时,我不会在输出中查看$ line。

#!/usr/bin/sh
#set -x

while read line; do
  count=`echo $line|wc -m`
  if [ $count -lt 9 ]
  then
    sed -n '/$line/=' Length4.txt;
  fi
done < Length4.txt

Length.txt

ABCD
DEFG
HFIJ
KLMN

2 个答案:

答案 0 :(得分:0)

shell中需要双引号才能进行变量扩展:

sed -n "/$line/=" Length4.txt

虽然如果您更好地描述问题,我们可以帮助您清理一些代码。

答案 1 :(得分:0)

使用awk

可以更轻松地解决这一问题
awk 'length($0) < 9 { print NR }' Length4.txt