使用perl
一種可能的解決方案:
的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, $.;
}
腳本接受三個參數:
- 輸入文件
- CHAR到搜索
- 要搜索的列:如果列是一個壞數字,它將搜索所有行。
運行腳本不帶參數:
perl script.pl
Usage: perl script.pl input-file char [column]
使用參數和輸出:
這裏0是一個壞列,它會搜索所有的線路。
perl script.pl stores.dat 't' 0
count lineNum
4 1
3 2
6 3
在這裏它搜索在第1列
perl script.pl stores.dat 't' 1
count lineNum
0 1
2 2
0 3
在這裏它搜索在第3欄
perl script.pl stores.dat 't' 3
count lineNum
2 1
1 2
4 3
th
不是炭。
perl script.pl stores.dat 'th' 3
Bad input
看看http://www.gnu.org/software/gawk/manual/gawk.html其非常強大的unix工具 – Chris
http://unix.stackexchange.com/questions/18736/how-to - 每行特定字符數 - –