SED-выражение для замены столбцов - PullRequest
1 голос
/ 03 марта 2020

Я пытаюсь выяснить, как поменять столбцы1 на столбец2, разделенные символом SED выражением ':'.

Пример дела:

column1:column2
column1:column2
column1:column2

Я хочу изменить на это:

column2:column1
column2:column1
column2:column1

Я попробовал следующее, но он просто выводит его без изменений.

sed 's/\([^ ]*\)[ ][ ^C\([^ ]*\)/\2 \1/' test.txt > test1.txt

Буду признателен за помощь.

1 Ответ

1 голос
/ 03 марта 2020

1-е решение: Не могли бы вы попробовать следующее. Используя попытку OP обратной ссылки здесь.

sed 's/\([^:]*\):\(.*\)/\2:\1/' Input_file

2-е решение: В awk, используя временную переменную и меняя значения обоих полей.

awk 'BEGIN{FS=OFS=":"} {tmp=$1;$1=$2;$2=tmp} 1' Input_file

ИЛИ, согласно предложению Sundeep, попробуйте просто напечатать их:

awk 'BEGIN{FS=OFS=":"} {print $2, $1}' Input_file

Почему попытка OP не работает: Метод OP для использование возможности обратных ссылок выглядит хорошо, но в регулярном выражении OP ищет место для совпадения, которого нет, поэтому нам нужно упомянуть : в соответствии с Input_file, и тогда оно должно работать с небольшим изменением.

...