在korn shell中使用sed命令时未找到

时间:2016-11-09 10:26:10

标签: shell unix sed ksh

#!/usr/bin/ksh
PATH=$PATH:/usr/bin/sed
export PATH
#echo -n "Enter file name : "
read name
if [ -e $name ]
then
var1="$(wc -l < $name)"
print "Total lines in file including header and trailer : $var1"
var2=$(tail -1 $name|cut -c11-20)
print $var2
var3="$((10#${var2}))"
print "Total record count as per Trailer record: $var3"
val=$(($var1-2))
print "total records w/o header and trailer is : $val"
if [[ $val -eq $var3 ]];then
echo " "
echo "Trailer record information for total record count is true"
else
echo "Trailer record count is erroneous"
fi
#echo -n "Please provide journal date string : "
#read journal
#journal=$(tail -n2 $name|head -n1|cut -c42-45)
#print "grep -c \"$journal\" $name"
journal1=$(tail -n2 $name|head -n1|cut -c42-45)
print $journal1
journal=$("/bin/sed '1d;\$d' $name|cut -c42-45|grep -c \"$journal1\"")
print "sed '1d;\$d' $name|cut -c42-45|grep -c \"$journal1\""
print $journal
if [[ $journal -eq $var3 ]];then
echo "All journals are valid"
else
echo "Please check journals manually."
fi
else
echo "File does not exists"
fi

当我执行以上脚本时,我得到sed命令未找到错误。在命令提示符下运行相同的sed命令。有人可以帮我吗?我已经尝试使用PATH,其中找到了sed命令。

当我为sed执行“whereis”时。我明白了: sed:/ usr / bin / sed

1 个答案:

答案 0 :(得分:0)

尝试一些小步骤,例如

echo "Almost solved this"| sed 's/Almost/We have/'

我认为此行中的sed将与您的普通PATH一起找到 查看脚本中的奇怪sed行。

journal=$("sed '1d;\$d' $name|cut -c42-45|grep -c \"$journal1\"")

将尝试将命令的stdout分配给变量日志。命令是

"sed '1d;\$d' $name|cut -c42-45|grep -c \"$journal1\""

这不是sed,而是选项与其他命令相关联,但是文件名很长sed '1d;$d' sample.dat|cut -c42-45|grep -c "2016"。 这与

完全不同
sed '1d;\$d' $name|cut -c42-45|grep -c \"$journal1\"

或更好

sed '1d;$d' "$name" |cut -c42-45|grep -c "$journal1"

当标题和尾标很小时,您可以使用

来避免sed$journal1
if [ $(cut -c42-45 "$name"| sort -u| wc -l) -eq 1 ]; then
   echo "All records have the same journal"
else
   echo "Something funny..."
fi

请在下次缩进文件。