一意の行値はCSVからヘッダーをスキップします。

一意の行値はCSVからヘッダーをスキップします。

1列の一意の値をすべて見つけようとします。ただし、このコマンドを使用すると、ヘッダー行も取得できます。スキップするにはどうすればよいですか?

awk -vFPAT='([^,]*)|("[^"]+")|","' '{if ($2!~/NULL/) {print $2}}' Files/* | sort | uniq -c | sort -n | wc -l

サンプルデータは次のとおりです。

"link","shared_story","101","52
"link","published_story","118","100
"link","published_story","134","51
"link",NULL,"152","398
"link","shared_story","398","110

ベストアンサー1

awk内の現在のファイルの行番号は、特殊FNR変数(NR各ファイルの行番号ではなく完全な行番号を保持)に格納されます。したがって、タイトルが最初の行にある場合は、その行をスキップするようにコマンドを変更するだけです。

awk -vFPAT='([^,]*)|("[^"]+")|","' '{if ($2!~/NULL/ && FNR>1) {print $2}}' Files/* 

あるいは、特定の文字列に一致するヘッダーの行をスキップすることもできます。

awk -vFPAT='([^,]*)|("[^"]+")|","' '{if ($2!~/NULL/ && !/headerString/) {print $2}}' Files/*

おすすめ記事