繁体   English   中英

Linux Bash文件阅读行和单词

[英]Linux Bash file Reading Lines and words

如果这是一个小问题,我深表歉意。 我正在学习如何使用linux bash,这个小任务让我头疼...

所以我需要编写一个脚本,我们称它为count.sh。 我想要这样:对于工作目录中的每个文件,向控制台打印文件名,行数和单词数:

test.txt 100 1023

一些其他文件10233

到目前为止,我知道以下内容为我提供了目录中的所有文件名。 感谢所有帮助我的人,我得到了这个工作版本:

for f in *; do
echo -n "$f"
cat "$f" | wc -wl
done

我将衷心感谢您的帮助! 谢谢你!

附言:如果您知道学习脚本的大量资源(教程的链接),并愿意与我分享。 我认为我真的需要了解这些基础知识。 再次感谢!

如果必须将文件名作为输出中的第一个字段,请尝试以下操作:

for f in *; do
  if [ -f "$f" ]; then
    echo -n "$f"
    cat "$f" | wc -wl
  fi
done
for f in *; do
  if [[ -f $f ]]; then
    echo "$f $(wc -wl < "$f")"
  fi
done
  • [[ -f $f ]]仅处理文件 (不包括子目录),并且还处理目录为空的情况 (在这种情况下, * (默认情况下)不作扩展,即按原样分配给$f )。
  • echo "$f $(wc -wl < "$f")"使用命令替换$( ... ) )将附带命令的输出直接包含在传递给echo的输出字符串中。
  • 请注意, <用于通过stdin将文件$f的内容定向到wc是,否则wc会将输入文件的名称附加到其输出(感谢@R Sahu)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM