当前位置:  开发笔记 > 编程语言 > 正文

从bash中获取wc中的整数

如何解决《从bash中获取wc中的整数》经验,为你挑选了7个好方法。

有没有办法获得wc在bash中返回的整数?

基本上我想在文件名之后将行号和字数写入屏幕.

output: filename linecount wordcount 这是我到目前为止:

files=`ls`
for f in $files;
do
        if [ ! -d $f ] #only print out information about files !directories
        then
                # some way of getting the wc integers into shell variables and then printing them
                echo "$f $lines $ words"
        fi
done



1> BananaNeil..:

最简单的回答:

wc < filename 


我的观点是,如果你要回答一个(1.5岁)问题,那么将所有信息都放到答案中,那就是全部:)
但不会产生所需的输出.
你已经回答了Google,这才算重要.:-)

2> sten..:

只是:

wc -l < file_name

会做的.但是这个输出包括前缀空格,wc右对齐数字.


要获得没有空格的行数:`wc -l <​​foo.txt | xargs的参考-/sf/ask/17360801/

3> James Broadh..:
wc $file | awk {'print "$4" "$2" "$1"'}

根据您的布局进行调整.

使用正逻辑("是文件")而不是负面("不是目录")也更好

[ -f $file ] && wc $file | awk {'print "$4" "$2" "$1"'}



4> casablanca..:

您可以使用该cut命令获取wc输出的第一个单词(行或单词计数):

lines=`wc -l $f | cut -f1 -d' '`
words=`wc -w $f | cut -f1 -d' '`


为同一文件运行两次wc效率很低.
没错,这就是为什么我认为James Broadhead的答案要好得多.由于字段之间的空格数不同,我无法使用`cut`来处理`wc $ f`的完整输出.

5> Tahsin Turko..:

有时wc在不同平台上以不同格式输出.例如:

在OS X中:

$ echo aa | wc -l

         1

在Centos:

$ echo aa | wc -l

1

因此,仅使用剪切可能无法检索数字.而是尝试tr删除空格字符:

$ echo aa | wc -l | tr -d ' '



6> rouble..:

接受/流行的答案不适用于OSX.

以下任何一个都应该可以在bsd和linux上移植.

wc -l < "$f" | tr -d ' '

要么

wc -l "$f" | tr -s ' ' | cut -d ' ' -f 2

要么

wc -l "$f" | awk '{print $1}'



7> Paused until..:

如果将文件名重定向到wc它,则省略输出文件名.

击:

read lines words characters <<< $(wc < filename)

要么

read lines words characters <

而不是使用for迭代输出ls,执行此操作:

for f in *

如果有包含空格的文件名,它将起作用.

如果你不能使用globbing,你应该管道while read循环:

find ... | while read -r f

或使用过程替代

while read -r f
do
    something
done < <(find ...)

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有