$line变量在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

您需要在shell中使用双引号进行变量扩展:

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

不过,如果你能更好地描述你的问题,我们可以帮助你清理一些代码。

使用awk:可以更容易地解决整个问题

awk 'length($0) < 9 { print NR }' Length4.txt

最新更新