У меня есть куча строк, которые выглядят как:Переместить слово в другую колонку в нескольких строках
some_command -arg1 -arg2 ITEM -arg3
мне нужно двигаться ITEM
сразу после some_command
файла не имеет комментарии и т.д. Таким образом, Мне нужно выполнить описанную выше операцию только в строках, начинающихся с some_command
.
Существует около 1000 таких линий, и я не могу сделать это вручную. Даже использование блочного визуального режима будет сложным, потому что на самом деле нет выравнивания.
Я думаю, awk
будет моим другом здесь. Положение ITEM
исправлено, поэтому я знаю номер столбца. Но как я могу сообщить awk
для печати $1
, затем $6
, а затем все остальные столбцы от $2
до $NF
, кроме $6
? А также делать это только на линиях, начинающихся с some_command
?
'AWK«/^some_command/{$ 1 = $ 1 "" $ 4; $ 4 = ""; } 1'' –
@WilliamPursell: Спасибо за хороший код, IMHO делает $ 4, поскольку NULL может вызвать проблему с интервалом, хотя и не проверял его вообще. – RavinderSingh13
@WilliamPursell я вижу, что вы там делали! умный парень! отлично работает .. RavinderSingh13 вы правы, он добавляет дополнительное пространство; но это не проблема для меня .. – shikhanshu