
XML文書に次のデータがあります
NAME 19/02/2019 23/02/2019 23/02/2019 13:21 12.99 0 12.99 Paid PayPal
NAME 19/02/2019 23/02/2019 23/02/2019 13:22 12.99 0 12.99 Paid PayPal
NAME 22/02/2019 23/02/2019 23/02/2019 13:23 12.99 0 12.99 Paid PayPal
NAME 23/02/2019 23/02/2019 23/02/2019 13:24 12.99 0 12.99 Paid PayPal
NAME 23/02/2019 23/02/2019 23/02/2019 13:25 12.99 0 12.99 Paid PayPal
NAME 23/02/2019 23/02/2019 23/02/2019 13:26 12.99 0 12.99 Paid PayPal
列は
Client Name Creation Date Due Date Date Paid Subtotal Credit Total Status Payment Method
このデータを以下のように変換する必要があります。最初に追加される新しい列は、請求書が生成された日付で、その後に、時間 (例: 13:21) ではなく、ドキュメント内の順序に基づいたその日の番号順が続きます。各日は 1 から始まる必要があります。
19-02-2019-1 NAME 19/02/2019 23/02/2019 23/02/2019 13:21 12.99 0 12.99 Paid PayPal
19-02-2019-2 NAME 19/02/2019 23/02/2019 23/02/2019 13:22 12.99 0 12.99 Paid PayPal
22-02-2019-1 NAME 22/02/2019 23/02/2019 23/02/2019 13:23 12.99 0 12.99 Paid PayPal
23-02-2019-1 NAME 23/02/2019 23/02/2019 23/02/2019 13:24 12.99 0 12.99 Paid PayPal
23-02-2019-2 NAME 23/02/2019 23/02/2019 23/02/2019 13:25 12.99 0 12.99 Paid PayPal
23-02-2019-3 NAME 23/02/2019 23/02/2019 23/02/2019 13:26 12.99 0 12.99 Paid PayPal
どうすればこれを実行できますか? Perl を使用するのが望ましいですが、何でも構いません。
答え1
xml
/からのテキスト出力を修正したいだけの場合はxpath
、次のようにパイプしますawk
。
sort -k2 file1 | awk '{head[$2]++;print $2"-"head[$2], $0}'
出力
19/02/2019-1 NAME 19/02/2019 23/02/2019 23/02/2019 13:21 12.99 0 12.99 Paid PayPal
19/02/2019-2 NAME 19/02/2019 23/02/2019 23/02/2019 13:22 12.99 0 12.99 Paid PayPal
22/02/2019-1 NAME 22/02/2019 23/02/2019 23/02/2019 13:23 12.99 0 12.99 Paid PayPal
23/02/2019-1 NAME 23/02/2019 23/02/2019 23/02/2019 13:24 12.99 0 12.99 Paid PayPal
23/02/2019-2 NAME 23/02/2019 23/02/2019 23/02/2019 13:25 12.99 0 12.99 Paid PayPal
23/02/2019-3 NAME 23/02/2019 23/02/2019 23/02/2019 13:26 12.99 0 12.99 Paid PayPal
出力がすでにソートされている場合は、 のcat file1
代わりにを使用しますsort
。