Awk print columns

Проблема, вызывающая сбой ansible run, указана в вашем последнем блоке терминалов:

No package matching 'php5-cli' found available, installed or updated

Вы должны обнаружить, что это также не работает, если вы попытаетесь установить его на узел без с помощью ansible; попробуй

node$ sudo apt install php5-cli

Удалите php5-cliиз php.ymlи повторите попытку.

2
19.06.2019, 00:40
4 ответа

Если я правильно понял ваш вопрос, это работает для вас?

sed -e 's/:/\t/1' -e 's/:/\t/1' yourFile

Первые два двоеточия заменяются символами табуляции, а остальные печатаются

С вашими демонстрационными данными вывод будет

ExampleCol1    ExampleCol2    Ex:am:ple:Col3

Я не уверен, так как в своем вопросе вы говорите, что получаете

ExampleCol1:ExampleCol2:Ex

При выполнении предоставленной вами команды awk я получаю

ExampleCol1    ExampleCol2    Ex
0
27.01.2020, 22:26
_example='ExampleCol1:ExampleCol2:Ex:am:ple:Col3'

awk -F: '{printf $1 "\t" $2 "\t"} {for(i=3;i<=NF;i++) printf $i "\t"} {print ""}' <<<"${_example}"

... выглядит немного беспорядочно, но выводит...

ExampleCol1 ExampleCol2 Ex  am  ple Col3

... вероятно, есть более краткий способ выразить то, что вы хотите, с помощью awk, например...

awk -F: '{for(i=1;i<=NF;i++) printf $i "\t"} {print ""}' <<<"$_example"

... но приведенное выше должно немного приблизить вас к желаемому поведению с помощьюawk

Обновление

О, похоже, вам нужно было двоеточие после второго столбца, если так, то...

awk -F: '{printf $1 "\t" $2 "\t"} {for(i=3;i<NF;i++) printf $i ":"} {print $NF}' <<<"$_example"

... может быть немного правильнее ответить на это с помощью awk...

ExampleCol1 ExampleCol2 Ex:am:ple:Col3
0
27.01.2020, 22:26

Один из выходов может быть таким, как показано:

 $ awk -vOFS="\t" '{
     sub(/:/, OFS)
     sub(/:/, OFS)
 }1' inp

Или, по-другому:

 $ awk '! /:.*:/ || sub(/:/, "\t") && sub(/:/, "\t")' inp
0
27.01.2020, 22:26

Пробовал с помощью приведенной ниже команды, все сработало

команда

 sed "s/:/ /3g" filename| awk -F ":" '{print $1,$2,$3}'| sed "s/ /:/3g"| awk 'OFS="\t" {print $1,$2,$3}'

выход

ExampleCol1 ExampleCol2 Ex:am:ple:Col3
0
27.01.2020, 22:26

Теги

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