2017-08-01 2 views

答えて

0

使用のawk:

$ awk -F\| '$3~/[0-9]{4}-[01][0-9]-[0-3][0-9]T[012][0-9]:[0-5][0-9]:[0-6][0-9]Z/' file 
AAAA|BBBB|2016-03-01T00:00:00Z|DDDD| 

はとして|を使用してフィールドセパレータ、3番目のフィールド($3)が正規表現(/.../)と一致する場合は、レコードを印刷します。

-1

これが役立ちます。

#!/bin/sh 
if [ ! $1 ]; then 
     echo Filename parameter expected 
     exit 
fi 

let lineno=0 

for i in `cat $1` 
do 
if [ ! `echo $i | awk -F\| '$3~/[0-9]{4}-[01][0-9]-[0-3][0-9]T[012][0-9]:[0-5][0-9]:[0-6][0-9]Z/'` ]; then 
     echo "Not Matching Record found on line : $lineno : [$i]" 
fi 
let lineno=$lineno+1 
done 

実行するには、次の sh <script name> <filename>

+0

これは、複数の問題のあるシェルプログラミング反パターンに浸透します。 http://mywiki.wooledge.org/DontReadLinesWithForと[backticksの無駄な使用](http://www.iki.fi/era/unix/award.html#backticks)。 – tripleee

関連する問題