Создать столбец из одной строки [bash] - PullRequest
0 голосов
/ 13 сентября 2018

имеет одну строку текста, как это:

a b c d e f ...

И я хочу это:

a b
c d
e f
...

Я пытаюсь с помощью sed, awk, для циклов, но у меня нет его ...

Можете ли вы помочь мне, пожалуйста ??

Спасибо !!

Ответы [ 5 ]

0 голосов
/ 13 сентября 2018

Использование только bash:

$ IFS=$' \t' read -ra a <<< "a b c d e f"
$ printf '%s %s\n' "${a[@]}"
a b
c d
e f
0 голосов
/ 13 сентября 2018
$ echo {a..f}
a b c d e f

$ echo {a..f} | tr -s '[:blank:]' '\n' | paste -d " " - -
a b
c d
e f
0 голосов
/ 13 сентября 2018

Я предполагаю, что между пробелами может быть более одного символа, поэтому

$ cat tmp.txt 
a b c d e f g h i j k l m n o p q r s t u v w x y z

$ cat tmp.txt | sed 's/\([^ ]* [^ ]*\) /\1\n/g'
a b
c d
e f
g h
i j
k l
m n
o p
q r
s t
u v
w x
y z
0 голосов
/ 13 сентября 2018

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

$ echo a b c d e f ... | rs -C\  0 2
a b 
c d 
e f 
... 

man rs:

NAME
     rs — reshape a data array

SYNOPSIS
     rs [-C[x]] [rows [cols]]

DESCRIPTION
     ...
     -C[x]   Output columns are delimited by the single character x.  
             A missing x is taken to be ‘^I’.
0 голосов
/ 13 сентября 2018

awk может сделать это наверняка. Но для данного примера и ожидаемого результата я бы использовал xargs:

xargs -n2 -a file

тест:

kent$  cat f
a b c d e f

kent$  xargs -n2 -a f
a b
c d
e f
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...