преобразовать столбец в строку [дубликат]

Два подхода:

sedподход:

sed "0,/members/{s/\bmembers */&$host, /}" printer.cfg
  • 0,/members/- диапазон адресов, занимающий диапазон строк, начиная с 1-й строки до первого вхождения из членовшаблон

awkподход:

awk -v h=$host '!f && /members /{ $2=sprintf("%8s, %s",h,$2); f=1 }1' printer.cfg

Вывод (для обоих подходов):

define hostgroup{
hostgroup_name  HOSTGROUP ONE   
alias       Host Group 1 Printers
members     foo0, foo1, bar2, foo2, bar3
}

define hostgroup{
hostgroup_name  HOSTGROUP TWO
alias       2nd Host Group
members     example1, example3, example2
}
1
14.07.2018, 01:13
4 ответа

Вы можете использовать awkдля этого.

 awk '{for(i=1;i<=NF;i++) printf "%s\n",$i}' input.txt
3
27.01.2020, 23:11
tr -s '[:blank:]' '\n' < file

или

awk 'BEGIN{RS="[ \t\n]+"} 1' file
1
27.01.2020, 23:11

Легкая работа дляtr:

$ cat input | tr ' ' '\n'
12
0
9
3
12
0
12
0
12
0
12
0
7
5
6
27.01.2020, 23:11

Использование xargs:

xargs -n1 < <(head input)

Или вы можете воспользоваться разбиением слов оболочки:

printf '%s\n' $(head input)
1
27.01.2020, 23:11

Теги

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