имеет одну строку текста, как это:
a b c d e f ...
И я хочу это:
Я пытаюсь с помощью sed, awk, для циклов, но у меня нет его ...
Можете ли вы помочь мне, пожалуйста ??
Спасибо !!
Использование только bash:
bash
$ IFS=$' \t' read -ra a <<< "a b c d e f" $ printf '%s %s\n' "${a[@]}" a b c d e f
$ echo {a..f} a b c d e f $ echo {a..f} | tr -s '[:blank:]' '\n' | paste -d " " - - a b c d e f
Я предполагаю, что между пробелами может быть более одного символа, поэтому
$ 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
Использование rs:
rs
$ echo a b c d e f ... | rs -C\ 0 2 a b c d e f ...
man rs:
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’.
awk может сделать это наверняка. Но для данного примера и ожидаемого результата я бы использовал xargs:
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