我很难读取存储在变量中的文件。它应该很简单,但不知何故我错过了一些东西,无法找出什么?
count=0
mip="$(<fila.txt)"
while read -r line
do
count=`expr $count + 1`
echo "line $count "
done < $mip
这是一个非常基本且简单的脚本,可以像这样计算行数,但是当我使用变量时完成 < $mip而不是文件名完成 < fila.txt。该脚本仅输出文件内容,例如猫 fila.txt而不是计算行数。
line 1
line 2
line 3
line 4
line 5
line 6
有任何想法吗 ??
答案1
done <$mip
仍然假设这$mip
是一个文件名。它不是。
你想要的可能是这样的
printf '%s\n' "$mip" |
while IFS= read -r line; do
printf 'line %d\n' "$(( ++count ))"
done
更直接的解决方案是
while IFS= read -r line; do
printf 'line %d\n' "$(( ++count ))"
done <filea.txt
甚至
cat -n filea.txt | sed 's/^ *\([0-9]*\).*$/line \1/'
最后一个命令将用于cat
枚举文件中的行并sed
删除实际的文件内容。
或者,使用awk
,这更简单:
awk '{ printf("line %d\n", NR) }' filea.txt
或者,如果您首先计算文件中的行数:
count=$( sed -n '$=' filea.txt ) # or: count=$( wc -l <filea.txt )
printf 'line %d\n' {1..$count}