2列を交換

2列を交換

「クリック数」と「ドメイン」の列を変更しようとしています。

cat filename出力:

  Hits          Domains
  204492        greenlivingasc.in
  37102         smcracks.uk
  17410         bahriains.org
  10975         cmhlahore.co.uk
  10342         albps.in
  9541          mediabites.co.uk

ただし、次のコマンドを使用して列を置き換えると、ソートされていないawk '{ print $2 " " $1}' filename形式が出力されます。

 Domains    Hits       
 greenlivingasc.in 204492
 smcracks.uk 37102
 bahriains.org 17410
 cmhlahore.co.uk 10975
 albps.in 10342
 mediabites.co.uk 9541

交換後に正しい位置合わせをしたいと思います。

答え1

column -t結果には次のように入力する必要があります。

awk '{ print $2 " " $1}' file.txt | column -t

答え2

columnmauヘルプなどのソリューション:

:~$ column -t 123
Hits    Domains
204492  greenlivingasc.in
37102   smcracks.uk
17410   bahriains.org
10975   cmhlahore.co.uk
10342   albps.in
9541    mediabites.co.uk

別の方法は、次のものを使用することですexpand

:~$ cat 123 | expand --tabs=10
Hits          Domains
204492        greenlivingasc.in
37102         smcracks.uk
17410         bahriains.org
10975         cmhlahore.co.uk
10342         albps.in
9541          mediabites.co.uk

またはawk表現を変更してください:

 cat 123 | awk -v cols=1 '{printf("%-44s",$0)} NR%cols==0 {print ""} END {print ""}'

関連情報