Как инвертировать порядок столбцов файла в Linux из командной строки

Я не верю так. Даже если я являюсь неправым, лучшим, можно надеяться на, добавляет их ко всему Типу, никогда экземпляр из Типа.

11
задан Ciro Santilli 新疆改造中心法轮功六四事件 18 December 2018 в 13:50
поделиться

3 ответа

Используйте awk:

awk '{print $2,$1}' ip-list

Это должно дать вам то, что вы хотите.

14
ответ дан 3 December 2019 в 05:35
поделиться

Простейшее решение:

awk '{print $2 "\t" $1}'

Однако есть некоторые проблемы. Если в любом из полей могут быть пробелы, вам необходимо выполнить одно из следующих действий: (в зависимости от того, поддерживает ли ваш awk -v)

awk -v FS='\t' '{print $2 "\t" $1}'
awk 'BEGIN{ FS="\t" } {print $2 "\t" $1}'

В качестве альтернативы вы можете выполнить одно из следующих действий:

awk -v OFS='\t' '{print $2,$1}'
awk 'BEGIN{ OFS="\t" } {print $2,$1}'
awk -v FS='\t' -v OFS='\t' '{print $2,$1}' # if allowing spaces in fields

В одном из комментариев спрашивается: ' куда идет имя файла? awk используется как фильтр, поэтому обычно он выглядит как:

$ some-cmd | awk ... | other-cmd

без указания имени файла. Или имя файла может быть указано в качестве аргумента после всех команд:

$ awk ... filename
4
ответ дан 3 December 2019 в 05:35
поделиться

perl -pi -e 's / ^ ([^ \ t] +) \ t ([^ \ t] +) $ / \ 2 \ t \ 1 / 'yourfile.csv

perl -pi -e' split ("\ t"); print "$ _ [1] \ t $ _ [0]" '

Первый, вероятно, работает и на sed .

0
ответ дан 3 December 2019 в 05:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: