-1

1000 行のファイルと、各行に 170 フィールドのファイルがあります。特定のフィールドを grep したい。たとえば、フィールド番号 30 は空白であるかどうか....

4

2 に答える 2

0

フィールド区切り文字が " :"の場合

awk -F":" '{if($30=="")print $0}' file_name

上記のコマンドは、フィールド 30 が空白の行を出力します。

于 2012-08-06T09:09:09.990 に答える
0

特定のフィールド セパレーターについて言及していないので、CSV ベースの例を続けます。をgrep使用してフィールド 30 を空白にするにはGNU grep:

$ grep -n '^\([^,]*,\)\{29\},' test.csv 
2:2,1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,55,,33

基本的に、,それぞれ末尾にコンマ ( ) の区切り文字を付けた 29 のフィールドが必要で、その直後に中間テキストのない別の区切り文字が必要です。

この-nオプションが存在することで、すべての一致に行番号が付けられるため、各一致が入力ファイルのどこにあるかがわかります。

これは POSIX 互換の grep で動作すると思いますが、確かではありません。

于 2012-08-07T07:43:37.893 に答える