Một giải pháp có thể sử dụng perl
:
Nội dung script.pl:
use warnings;
use strict;
## Check arguments:
## 1.- Input file
## 2.- Char to search.
## 3.- (Optional) field to search. If blank, zero or bigger than number
## of columns, default to search char in all the line.
(@ARGV == 2 || @ARGV == 3) or die qq(Usage: perl $0 input-file char [column]\n);
my ($char,$column);
## Get values or arguments.
if (@ARGV == 3) {
($char, $column) = splice @ARGV, -2;
} else {
$char = pop @ARGV;
$column = 0;
}
## Check that $char must be a non-white space character and $column
## only accept numbers.
die qq[Bad input\n] if $char !~ m/^\S$/ or $column !~ m/^\d+$/;
print qq[count\tlineNum\n];
while (<>) {
## Remove last '\n'
chomp;
## Get fields.
my @f = split /\|/;
## If column is a valid one, select it to the search.
if ($column > 0 and $column <= scalar @f) {
$_ = $f[ $column - 1];
}
## Count.
my $count = eval qq[tr/$char/$char/];
## Print result.
printf qq[%d\t%d\n], $count, $.;
}
Kịch bản chấp nhận ba thông số:
- Input tập tin
- Char để tìm kiếm
- Cột để tìm kiếm: Nếu cột là chữ số xấu, cột sẽ tìm kiếm tất cả các dòng.
Chạy kịch bản không có đối số:
perl script.pl
Usage: perl script.pl input-file char [column]
Với lập luận và sản lượng của nó:
đây 0 là một cột xấu, nó tìm kiếm tất cả các dòng.
perl script.pl stores.dat 't' 0
count lineNum
4 1
3 2
6 3
Ở đây nó tìm kiếm trong cột 1.
perl script.pl stores.dat 't' 1
count lineNum
0 1
2 2
0 3
Ở đây nó tìm kiếm trong cột 3.
perl script.pl stores.dat 't' 3
count lineNum
2 1
1 2
4 3
th
không phải là một char.
perl script.pl stores.dat 'th' 3
Bad input
hãy xem http://www.gnu.org/software/gawk/manual/gawk.html công cụ unix mạnh mẽ của nó – Chris
http://unix.stackexchange.com/questions/18736/how-to -count-the-number-of-a-cụ thể-ký tự-trong-mỗi-dòng –