他の列に影響を与えずに1つの列の値を並べ替えるには、awkまたはsedを使用します。

他の列に影響を与えずに1つの列の値を並べ替えるには、awkまたはsedを使用します。

次の形式のcsvファイルがあります。

abc,124,123,2014-08-13,abc
def,124,123,2014-08-13,abc
ghi,124,123,2014-08-13,abc

5番目の列()のみを変更すると、次2014-08-13のような出力が生成されます。

abc,124,123,13/08/2014,abc
def,124,123,13/08/2014,abc
ghi,124,123,13/08/2014,abc

可能であれば、ライナーawkまたはソリューションを使用することをお勧めします。sed

ベストアンサー1

解決策awk

awk -F'[,-]' '{printf "%s,%s,%s,%s/%s/%s,%s\n", $1, $2, $3, $6, $5, $4, $7}' file

説明する:

  • -F'[,-]:区切り記号を,またはに設定します。-
  • '{printf "%s,%s,%s,%s/%s/%s,%s\n", $1, $2, $3, $6, $5, $4, $7}':最後に改行文字を使用して、目的の順序でセクションを印刷します。

解決策は次のとおりですsed

sed 's|\([0-9]*\)-\([0-9]*\)-\([0-9]*\)|\3/\2/\1|g' file

説明する:

  • \([0-9]*\)-\([0-9]*\)-\([0-9]*\):digits-dash-digits-dash-digits検索(サブパターン\1\2合計に数字を保存\3
  • \3/\2/\1/中間順に逆順に交換してください。

おすすめ記事