awkコマンドによるテキストファイルの編集

awkコマンドによるテキストファイルの編集

私はこのコマンドに初めてアクセスし、これまでいくつか試しましたが、毎回失敗しました。

次のテキストファイル(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

このテキストファイルで何をしたいですか?説明します!

  1. まず、ファイルを並べ替えたいと思います。日/月/年/時/分/秒滞在。ただし、日付に関連する他のすべてのデータは、日付に従って並べ替える必要があります。コマンドでこれを達成できますかawk
  2. 第二に、次のような出力を見るためにテキストファイルをソートしたいと思います(デフォルトでは空白行を「;」文字で変更したい)。
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

関連情報