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/*