最初の列が小文字の文字列である最初の列に基づいてCSVファイルをソートし、ヘッダー行を無視する方法は?
答え1
sort
ヘッダーを除外するオプションはありません。以下を使用してヘッダーを削除できます。
tail -n+2 yourfile | sort
このtail構文は、yourfile
2行目からファイルの終わりまで続きます。
もちろん、結果に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
ファイルにヘッダーがない場合に使用されます。