我正在执行一项任务,要求我创建一个脚本,该脚本以文件名作为参数,然后应该打印文件中的所有行以及它们的长度,例如: 香蕉牛奶 =>香蕉牛奶 11 unix 和 linux =>unix 和 linux 14 macbook pro =>macbook pro 11
答案1
这会打印文件中的每一行,后跟行的长度(就字符数而言,不包括 POSIX 兼容的 awk 实现中的行分隔符,尽管有些会给出字节数)。
<FOO awk '{print $0,length}'
不确定这是否是你要问的。
答案2
该awk
解决方案是最好的解决方案,但是,如果您不想使用 awk,这里有一些替代方案:
while IFS= read -r line
do
printf "%s %d\n" "$line" "${#line}"
done < "$1"
while IFS= read -r line
do
printf "%s %d\n" "$line" "$(expr "$line" : '.*')"
done < "$1"
while IFS= read -r line
do
printf "%s %d\n" "$line" "$(printf "%s" "$line" | wc -c)"
done < "$1"
while IFS= read -r line
do
printf "%s %d\n" "$line" "$(wc -c <<< "$line")"
done < "$1"
该wc -c <<< "$line"
变体将给出比其他数字高一个的数字,因为它包含换行符。
答案3
不太确定您在寻找什么。以下脚本应该准确给出您想要的输出。
#!/bin/bash
cat $1
cat $1 | wc -m