在 bash 中计算行字符我做了下面这个例子但它对我来说不起作用我尝试
#!/bin/bash
file=$1
line=$2
v=0
if [ $# -ne 1 ]
then
echo "$0 fileName"
exit 1
fi
if [ ! -f $file ]
then
echo "$file not a file"
exit 2
fi
while read -n 1 c
do
l=$(echo $c | tr [:upper:] [:lower:])
[[ "$l" == "a" || "$l" == "e" || "$l" == "i" || "$l" == "o" || "$l" == "u" ]] && (( v++ ))
done < $file
echo "Characters : $(cat $file | wc -c)"
我想要代码来计算我给出的段落中的字符或任何内容?
答案1
我会亲自告诉你答案。保证你会认真学习并理解,而不是只是复制粘贴。
您不需要逐个字符地读取文件。这会使速度慢得多,并且更难确定您在哪一行。如果您只需要在 shell 中执行此操作:逐行读取文件,当您在正确的行上时,有一个参数扩展会返回值的长度。
#!/bin/bash
file=$1
lineno=$2
# ... validation here ...
nr=0
while IFS= read -r line; do
if (( ++nr == lineno )); then
printf "Line %d from file %s has %d characters" \
"$lineno" "$file" "${#line}"
break
fi
done <"$file"
进一步阅读:
但常用工具的流程更简单:
sed -n "$lineno {p;q}" "$file" | wc -c # this will count the newline
# or
awk -v n="$lineno" 'FNR == n {print length($0)}' "$file"