打印文件行及其长度的脚本

打印文件行及其长度的脚本

我正在执行一项任务,要求我创建一个脚本,该脚本以文件名作为参数,然后应该打印文件中的所有行以及它们的长度,例如: 香蕉牛奶 =>香蕉牛奶 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

相关内容