wc -l file.txt
Run Code Online (Sandbox Code Playgroud)
输出行数和文件名.
我只需要数字本身(不是文件名).
我可以做这个
wc -l file.txt | awk '{print $1}'
Run Code Online (Sandbox Code Playgroud)
但也许有更好的方法?
有没有办法获得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
假设我想计算项目中的代码行数.如果所有文件都在同一个目录中,我可以执行:
cat * | wc -l
Run Code Online (Sandbox Code Playgroud)
但是,如果有子目录,则不起作用.为此,cat必须具有递归模式.我怀疑这可能是xargs的一项工作,但我想知道是否有更优雅的解决方案?
我在bash脚本中有以下三个结构:
NUMOFLINES=$(wc -l $JAVA_TAGS_FILE)
echo $NUMOFLINES" lines"
echo $(wc -l $JAVA_TAGS_FILE)" lines"
echo "$(wc -l $JAVA_TAGS_FILE) lines"
Run Code Online (Sandbox Code Playgroud)
并且在脚本运行时它们都产生相同的输出:
121711 /home/slash/.java_base.tag lines
121711 /home/slash/.java_base.tag lines
121711 /home/slash/.java_base.tag lines
Run Code Online (Sandbox Code Playgroud)
即文件名也被回显(我不想这样).为什么这些scriplet会失败,我应该如何输出干净:
121711 lines
Run Code Online (Sandbox Code Playgroud)
?
我尝试了unxutils ' wc -l
但它崩溃了1GB文件.我试过这个C#代码
long count = 0;
using (StreamReader r = new StreamReader(f))
{
string line;
while ((line = r.ReadLine()) != null)
{
count++;
}
}
return count;
Run Code Online (Sandbox Code Playgroud)
它在4秒内读取500MB文件
var size = 256;
var bytes = new byte[size];
var count = 0;
byte query = Convert.ToByte('\n');
using (var stream = File.OpenRead(file))
{
int many;
do
{
many = stream.Read(bytes, 0, size);
count += bytes.Where(a => a == query).Count();
} while (many == size);
}
Run Code Online (Sandbox Code Playgroud)
在10秒内读取
var count …
Run Code Online (Sandbox Code Playgroud) 我想使用来自'wc'的行作为变量.例如:
echo 'foo bar' > file.txt
echo 'blah blah blah' >> file.txt
wc file.txt
2 5 23 file.txt
Run Code Online (Sandbox Code Playgroud)
我想有这样的事情$lines
,$words
以及$characters
相关的价值观2
,5
和23
.我怎么能用bash做到这一点?
我试图使用sed根据特定扩展计算所有行.
find -name '*.m' -exec wc -l {} \; | sed ...
Run Code Online (Sandbox Code Playgroud)
我正在尝试执行以下操作,如何在此特定行中包含sed以获取总计.
我从wc -l
命令得到了错误的结果.经过很长时间:(检查发现问题的核心,这里是模拟:
$ echo "line with end" > file
$ echo -n "line without end" >>file
$ wc -l file
1 file
Run Code Online (Sandbox Code Playgroud)
这是两行,但缺少最后一行"\n".任何简单的方案?
嗨,我是UNIX新手,我必须从传入的csv文件中获取行数.我使用以下命令来计算.
wc -l filename.csv
Run Code Online (Sandbox Code Playgroud)
考虑带有1条记录的文件iam在开始时获取一些带有*的文件,如果我发出相同的命令,我将得到的数量为0.这些文件是否在这里有任何意义,如果我得到一个带有ctrlm(CR)的文件而不是NL如何获取该文件中的行数.给我一个解决问题的命令.提前致谢.
我必须编写一个脚本,它接受一个句子并打印字数,字符数(不包括空格),每个单词的长度和长度.我知道wc -m
在单词中有反字符数,但如何在脚本中使用它?
#!/bin/bash
mystring="one two three test five"
maxlen=0;
for token in $mystring; do
echo -n "$token: ";
echo -n $token | wc -m;
if [ ${#token} -gt $maxlen ]; then
maxlen=${#token}; fi;
done
echo "--------------------------";
echo -n "Total words: ";
echo "$mystring" | wc -w;
echo -n "Total chars: ";
echo "$mystring" | wc -m;
echo -n "Max length: ";
echo $maxlen
Run Code Online (Sandbox Code Playgroud)