Reputation: 707
I was looking for something like this. I have an demo.txt file which contains words a follows
bold
code
make
links
placing
line
return
where I'm willing to achieve the result as
bold
code
make
links
placing
line
return
bold code
code make
make links
links placing
placing line
line return
bold code make
code make links
make links placing
links placing line
placing line return
sed or awk or scripts can be helpful
Upvotes: 0
Views: 76
Reputation: 247012
words_per_line() {
local n=$(($1-1)) i j
for ((i=0; i<${#words[@]}-n; i++)); do
for ((j=0; j<=n; j++)); do
printf "%s " ${words[i+j]}
done
echo
done
}
mapfile -t words < demo.txt # read the file into a zero-indexed array
words_per_line 1
words_per_line 2
words_per_line 3
outputs
bold
code
make
links
placing
line
return
bold code
code make
make links
links placing
placing line
line return
bold code make
code make links
make links placing
links placing line
placing line return
This produces the same output:
ruby -e '1.upto(3) {|n| ARGV.each_cons(n) {|a| puts a.join(" ")}}' $(< demo.txt)
Upvotes: 2