Как напечатать вывод рядом? - PullRequest
2 голосов
/ 07 апреля 2020

У меня есть следующий вывод из скрипта:

192.168.0.10
192.168.0.10
undefined
192.168.0.130
192.168.0.130
ansible
192.168.0.141
192.168.0.141
undefined
192.168.0.252
192.168.0.252
undefined

, но я хочу, чтобы он был таким:

192.168.0.10 192.168.0.10 undefined
192.168.0.130 192.168.0.130 ansible
192.168.0.141 192.168.0.141 undefined
192.168.0.252 192.168.0.252 undefined

Я видел, как получить 2 строки рядом друг с другом но у меня не получается 3 ^^

awk '{getline b;printf("%s %s\n",$0,b)}'

Ответы [ 2 ]

3 голосов
/ 07 апреля 2020

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

awk '{count++;printf("%s%s",$0,count%3==0?ORS:OFS)} END{if(count%3!=0){print ""}}' Input_file

Объяснение: Добавление подробного объяснения для кода выше.

awk '                                       ##Starting awk program from here.
{
  count++                                   ##Increasing variable count value with 1 here.
  printf("%s%s",$0,count%3==0?ORS:OFS)      ##Printing current line and either new line(ORS) or space(OFS) based opon condition if count is divided by 3 or NOT.
}
END{                                        ##Starting END block for this awk code here.
  if(count%3!=0){                           ##Checking condition if count is NOT fully divided by 3 then do following.
    print ""                                ##Printing null variable here in case previous line was not having new line so to add it in last.
  }
}
'  Input_file                               ##Mentioning Input_file name here.
2 голосов
/ 07 апреля 2020

Попробуйте использовать пасту.

paste - - - < file.txt

Чтобы использовать только разделитель пробелов.

paste -d ' ' - - - < file.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...