Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2867

[Bash]対象パターンの行数をカウントする

$
0
0

Bashで、対象パターンの行数をカウントするサンプルコード(覚え書き)。
具体的には、ファイル内に、対象文字列が所定の箇所にある行数をカウントします。

環境

  • OS: Amazon Linux2

概要

指定したファイル内に、対象文字列が所定の箇所にある行数をカウントします。

コマンドライン引数の
第1引数: ファイル名
第2引数: 検索したい文字列
第3引数: 切り取り開始位置(行の先頭が0始まり)
第4引数:切り取り数
を指定して実行します。

コード

count_match_line.sh
#!/bin/bash## 対象文字列が所定の箇所にある行数をカウント## $1: ファイル名# $2: 検索したい文字列# $3: 切り取り開始位置(行の先頭を0として)# $4: 切り取り数count=0
while read line
do
   if[$2=${line:${3}:${4}}];then
        count=$((count+1))fi
done< $1echo"対象データは$count件です"

本当は、

count=$((count++))

にしたかったけど、うまくいかなかったので、

count=$((count+1))

にしました(解決したら直します)。

実行してみる

以下のファイルで、各行の先頭を0文字目として、13文字目~が、123となっている行数をカウントします。

hoge.tsv
000000  00000   123     000001
000000  00000   125     000001
000000  00000   124     000001
000000  00000   123     000002
000000  00000   123     000003
000000  00000   124     000002
000000  00000   123     000004
000000  00000   125     000002

1, 4, 5, 7行目の計4行に、123が含まれています。
スペースっぽい箇所は、タブです。

実行コマンドと結果

$ bash count_match_line.sh /product/share/eee/hoge.tsv 123 13 3
対象データは4 件です

うまくいきました!

参考


Viewing all articles
Browse latest Browse all 2867

Trending Articles