私はこのコマンドに初めてアクセスし、これまでいくつか試しましたが、毎回失敗しました。
次のテキストファイル(MWE)があります。
26 6 2020 09:06:23.300 277.430 50.131 20654.698008
26 6 2020 09:05:23.322 277.153 50.000 20493.667799
このテキストファイルで何をしたいですか?説明します!
- まず、ファイルを並べ替えたいと思います。日/月/年/時/分/秒滞在。ただし、日付に関連する他のすべてのデータは、日付に従って並べ替える必要があります。コマンドでこれを達成できますか
awk
? - 第二に、次のような出力を見るためにテキストファイルをソートしたいと思います(デフォルトでは空白行を「;」文字で変更したい)。
26;6;2020;09;05;23;277.153;50.000;20493.667799
26;6;2020;09;06;23;277.430;50.131;20654.698008
上記でも、時間区切り記号が「:」から「;」に変更されたことがわかります。。タイミング自分で削除してください。今すぐMS Excelを介してすぐに削除します(コピー+貼り付けと編集のみ)。もっと短い方法があれば学びたい!
よろしくお願いします!
ありがとう、
答え1
あなたの質問はまだ不明ですが、次のようなことをしたいようです。
$ awk -F'[[:space:]]+|:' -v OFS=';' '{sub(/\..*/,"",$6); print}' file |
sort -nt';' -k3,3 -k2,2 -k1,1 -k4,6
26;6;2020;09;05;23;277.153;50.000;20493.667799
26;6;2020;09;06;23;277.430;50.131;20654.698008
答え2
awkを使用して区切り文字を変更するイディオムは次のとおりです。
awk -F 'input_field_separator' -v OFS='output_field_separator' '{$1=$1; print}' file
この$1=$1
ビットは、awkがOFS rewriteを使用することを強制します$0
。
ここで、入力フィールド区切り文字はスペースまたはコロンです。
awk -F '[[:blank:]]+|:' -v OFS=';' '{$1=$1; print}' file