Shell unix文件中每行的字节计数

Shell unix文件中每行的字节计数,shell,unix,ksh,Shell,Unix,Ksh,我想对一个文件中的所有行进行计数,其中行中的字节计数大于一个值(比如10)。我怎样才能做到 我尝试使用cat文件| awk'length($0)>10',但这给了我所有字符数大于10的行。我想计算行中的字节数 我写了下面的代码,但它不工作。它返回一些乱七八糟的输出: #!/bin/ksh file="a.txt" while read line do a=`wc -c "${line}"|awk {'print $1'}` if [ $a -ne 493]; then e

我想对一个文件中的所有行进行计数,其中行中的字节计数大于一个值(比如10)。我怎样才能做到

我尝试使用
cat文件| awk'length($0)>10'
,但这给了我所有字符数大于10的行。我想计算行中的字节数

我写了下面的代码,但它不工作。它返回一些乱七八糟的输出:

#!/bin/ksh
file="a.txt"
while read line
do
    a=`wc -c "${line}"|awk {'print $1'}`
    if [ $a -ne 493]; then
    echo "${line}"
    fi
done <"$file"
#/bin/ksh
file=“a.txt”
读行时
做
a=`wc-c“${line}”| awk{'print$1'}`
若[$a-东北493];然后
回显“${line}”
fi

完成您的方法非常好,只是您必须对字节执行
a=$(wc-c您可能需要
wc-c
。这将给我整个文件的计数。我想要字节计数大于给定值的行。您可以逐行读取,然后
回显“$line”| wc-w
,等等。您如何区分“字节”和“字节”是什么“char”?除非你使用UTF-8这样的多字节编码,否则它们很可能是相同的…@fedorqui我理解有时会有差异。我想我的措辞很糟糕-我想知道这里使用的是哪种字节映射(也称为编码)。对于一些人(不太常见)编码,为这项工作找到合适的工具可能不是那么简单,而使用更常见的UTF-*和/或ISO 8859-*以及其他一些工具可能是可行的……您可以将文件名更改为a.txt.I吗?如果您使用
bash
您可以通过
a=${line}获得长度
@MarkSetchell true,只是OP想要字节长度,而不是字符,我猜
${var}
返回字符。如果我们说
r=“hállo”
(这里的重音),那么
echo${r}
返回5,而
echo“hállo”wc-c
返回7;//如果我们说
r=“hallo”
(没有重音),
echo${r}
返回5,而
echo“hallo”| wc-c
返回6。您需要
echo-n
以防止换行符包含在计数中。
#!/bin/ksh
file="a.txt"
while read line
do
    a=$( echo -n "$line" | wc -c) # echo -n to prevent counting new line
    if [ "$a" -ne 493 ]; then
      echo "${line}"
    fi
done <"$file"