当我尝试perlfaq5的最后一个例子时 :我怎么算一个文件中的行号?我收到一条错误消息.我该怎么做才能使脚本正常工作?
#!/usr/local/bin/perl -T
use warnings;
use 5.012;
$ENV{PATH} = undef;
my $filename = 'perl2.pl';
if( $filename =~ /^([0-9a-z_.]+)\z/ ) {
my $lines = `/usr/bin/wc -l $1`;
print $lines;
}
Run Code Online (Sandbox Code Playgroud)
输出:
Insecure $ENV{ENV} while running with -T switch at ./perl1.pl line 10.
Run Code Online (Sandbox Code Playgroud) 我有一个find脚本,如果只找到一个文件,它会自动打开一个文件.我目前处理它的方式是对搜索结果的行数进行字数统计.有更简单的方法吗?
if [ "$( cat "$temp" | wc -l | xargs echo )" == "1" ]; then
edit `cat "$temp"`
fi
Run Code Online (Sandbox Code Playgroud)
编辑 - 这是整个脚本的上下文.
term="$1"
temp=".aafind.txt"
find src sql common -iname "*$term*" | grep -v 'src/.*lib' >> "$temp"
if [ ! -s "$temp" ]; then
echo "ø - including lib..." 1>&2
find src sql common -iname "*$term*" >> "$temp"
fi
if [ "$( cat "$temp" | wc -l | xargs echo )" == "1" ]; then
# just open it …Run Code Online (Sandbox Code Playgroud) 为什么字符数是4?
echo abc|wc -c
Run Code Online (Sandbox Code Playgroud)
产量
4
Run Code Online (Sandbox Code Playgroud)
输出应该是3,因为字符数是3.
例如:
myCleanVar=$( wc -l < myFile )
myDirtVar=$( wc -l myFile )
echo $myCleanVar
9
echo $myDirtVar
9 myFile
Run Code Online (Sandbox Code Playgroud)
为什么在"myCleanVar"中我从"wc"命令得到一个"整数"值,而在"myDirtVar"中我得到的结果如下:"9 file.txt"?我引用了"整数"因为知道在Bash shell中默认情况下都被视为一个字符串,但无法理解第一个和第二个表达式的行为差异.在这种情况下,重定向"<"的特殊效果是什么?
韩语由单词块组成(例如,가,나,다라等).我需要一种方法来计算这些字块.例如,바다(海)这个词应该返回2.但是
wc -w 将返回1
wc -c 将返回7
所以这些选项对我不起作用.我很感激你的帮助.
在UNIX中,我可以执行以下操作:
grep -o 'string' myFile.txt | wc -l
Run Code Online (Sandbox Code Playgroud)
它将计算包含字符串的myFile.txt中的行数.或者我可以使用:
grep -o 'string' *.txt | wc -l
Run Code Online (Sandbox Code Playgroud)
这将计算包含该字符串的文件夹中所有.txt扩展名文件中的行数.我正在寻找一种方法来对文件夹中的所有文件进行计数,但是要查看每个文件的输出分隔,例如:
myFile.txt 10000
myFile2.txt 20000
myFile3.txt 30000
我希望我已经清楚了,如果没有,你可以在输出中看到一个有点接近的例子:
wc -l *.txt
Run Code Online (Sandbox Code Playgroud) 我正在处理一些大型文本文件,即.将它们从一种格式转换为另一种格式.文件的原始格式存在一些细微差别,但是 - 在少数情况下进行了一些预处理 - 它们大部分都是使用我创建的bash shellcript成功转换的.
到目前为止一切都那么好,但有一件事令我困惑.$iterations有时,脚本会设置一个名为的变量,以便它知道执行特定for循环的次数.此值由脚本创建的临时文件中的空行数确定.
因此,我的脚本的原始版本包含以下行:
iterations=$(cat tempfile | grep '^$' | wc -l)
Run Code Online (Sandbox Code Playgroud)
到目前为止,除了其中一个文本文件之外,其他所有文件都没有$iterations正确设置变量,即使看起来有超过20,000个空行,也给出了值"1" tempfile.
然而,在发现之后grep -c,我将线路改为:
iterations=$(cat tempfile | grep -c '^$')
Run Code Online (Sandbox Code Playgroud)
并且剧本突然起作用,即.$iterations设置正确.
谁能解释为什么这两个版本会产生不同的结果?为什么第一个版本适用于某些文件而不适用于其他文件?是否有一些上限值,wc -l默认为1?这不会与第一个版本的工作文件是最大的一个,但不是在中集(其正确地转换第一次)最大.
使用巨大的CSV文件进行数据分析,我们通常需要知道特定文件夹中所有csv文件的行数。
但是,如何仅用Linux中的一个命令来完成呢?
我想知道为什么对于此处( train_en.txt) 和此处( )给出的文件,使用 bash 进行的简单行计数给出的行数与使用 python(版本 3.6)计算的行数不同train_de.txt。在 bash 中,我使用以下命令:
wc -l train_en.txt
wc -l train_de.txt
Run Code Online (Sandbox Code Playgroud)
输出分别为 4520620 和 4520620。
在 python 中,我使用以下命令:
print(sum(1 for line in open('train_en.txt')))
print(sum(1 for line in open('train_de.txt')))
Run Code Online (Sandbox Code Playgroud)
输出分别为 4521327 和 4521186。
当我使用 python 命令时
len(open('train_en.txt').read().splitlines())
len(open('train_de.txt').read().splitlines())
Run Code Online (Sandbox Code Playgroud)
我分别得到 4521334 和 4521186(其train_en.txt结果与之前的 python 命令的结果不匹配)。
作为参考,这些是通过连接WMT '14 英语到德语翻译任务中的Common Crawl、Europarl和News Commentary数据集(按顺序)生成的并行文本语料库,并且应具有相同的行数。
我正在撰写一篇很长的散文,并希望使用git来跟踪字数.(不是提交的图表,有详细记录.)
如何绘制字数与时间(或字数与提交)的关系图?