当前位置: 首页 > 面试题库 >

具有多行和单行的文本文件中的行数

苏建安
2023-03-14
问题内容

UTL_FILE在oracle中使用实用程序将数据获取到csv文件中。在这里我正在使用脚本。

所以我得到了一组文本文件

情况1

test1.csv文件中的输出示例为

"sno","name"
"1","hari is in singapore
ramesh is in USA"
"2","pong is in chaina
chang is in malaysia
vilet is in uk"

现在我通过使用linux commans来计算test1.csv中的记录数

egrep -c "^\"[0-9]" test1.csv

在这里,我得到的记录数为

2      (ACCORDING TO LINUX)

但是如果我通过使用select * from test计算记录数;

 COUNT(*)
----------                 (ACCORDING TO DATA BASE)
    2

案例:2

test2.csv文件中的输出示例是

"sno","name","p" "","","" "","","ramesh is in USA" "","",""

现在我通过使用linux commans来计算test2.csv中的记录数

egrep -c "^\"[0-9]" test2.csv

在这里,我得到的记录数为

0      (ACCORDING TO LINUX)

但是如果我通过使用select * from test计算记录数;

 COUNT(*)
----------                 (ACCORDING TO DATA BASE)
    2

任何机构都可以帮助我如何使用单个命令来计算case:1和case:2的确切行数

提前致谢。


问题答案:

两种情况下的列都不同。为了使其通用,我编写了一个perl脚本来打印行。它从头生成正则表达式,并用它来计算行。我假设第一行始终代表列数。

#!/usr/bin/perl -w

open(FH, $ARGV[0]) or die "Failed to open file";

# Get coloms from HEADER and use it to contruct regex 
my $head = <FH>;
my @col = split(",", $head); # Colums array
my $col_cnt = scalar(@col);  # Colums count

# Read rest of the rows 
my $rows;
while(<FH>) {
$rows .= $_;
}

# Create regex based on number of coloms
# E.g for 3 coloms, regex should be 
# ".*?",".*?",".*?" 
# this represents anything between " and "
my $i=0;
while($i < $col_cnt) {
$col[$i++] = "\".*?\"";
}
my $regex = join(",", @col);

# /s to treat the data as single line 
# /g for global matching
my @row_cnt = $rows =~ m/($regex)/sg; 
print "Row count:" . scalar(@row_cnt);

只需将其存储为row_count.pl并以./row_count.pl filename



 类似资料:
  • 如何创建具有文本限制的多行edittext?我设置了edittext的maxLength,但它使edittext成为单行,如果我将inputType添加到textMultiLine,则设置为actionDone的imeOptions将不会显示。我不想为maxLines属性设置静态值。 而且,当编辑文本达到其极限时,键盘仍然允许文本,这使得删除文本变得困难。如何解决这个问题?

  • 是否可能使用Javas文本块功能(Java15),但只写一行? 看来我不得不写多行了。 例如,我想在一行中写这个,以避免转义其中的 但它不能编译,我必须写 相反 我是不是忽略了什么?

  • 问题内容: 我有一个包含7000万行文本的大型测试文件。我必须逐行阅读文件。 我使用了两种不同的方法: 和 是否有另一种方法可以使此任务更快? 最好的祝福, 问题答案: 1)我确定速度没有差异,两者都在内部使用FileInputStream和缓冲 2)您可以进行测量并亲自查看 3)虽然没有性能优势,但我喜欢1.7方法 4)基于扫描仪的版本 5)这可能比其余的更快 它需要一些编码,但是由于,它确实可

  • 我目前正在做一个更大的项目,我想用很少的代码作为输入来测试可执行文件。 我这样称呼它

  • 问题内容: DataGridView控件是否可以在单元格中显示多行文本? 我正在使用Visual Studio 2005和C#。 问题答案: 您应该将column的属性设置为。之后,单元格中的文本将正确显示。 示例(一栏): (= 在Windows中)

  • 我正在使用多行EditText视图,它可以在输入中包含webUrl。为此,我使用