ヘッダーを無視し、最初の列に基づいてCSVファイルを並べ替える

ヘッダーを無視し、最初の列に基づいてCSVファイルを並べ替える

最初の列が小文字の文字列である最初の列に基づいてCSVファイルをソートし、ヘッダー行を無視する方法は?

答え1

sortヘッダーを除外するオプションはありません。以下を使用してヘッダーを削除できます。

tail -n+2 yourfile | sort 

このtail構文は、yourfile2行目からファイルの終わりまで続きます。

もちろん、結果にsortヘッダーは含まれません。

head -n1 yourfileファイルの最初の行(ヘッダー)のみを印刷するコマンドを使用して、ヘッダーを分割できます。

これを組み合わせるには、次のように実行できます。

head -n1 yourfile && tail -n+2 yourfile | sort

答え2

ヘッダーを保持したいとします。ファイルの内容をグループ化された構造にリダイレクトします。

{
    # grab the header and print it untouched
    IFS= read -r header
    echo "$header"
    # now process the rest of the input
    sort
} < file.csv

答え3

使用 csvkit:

$ csvsort -c 1 file.csv

そうでなければ

$ csvsort file.csv

違いは、最初のコマンドは最初の列のみを使用し、2番目のコマンドはすべての列を使用することです(これと同じですsort)。

ツールcsvkitは、入力CSVファイルの最初の行にヘッダー行があると想定しています。-Hファイルにヘッダーがない場合に使用されます。

関連情報