Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

loop over characters in input string using awk

Believe it or not, I can't find the answer to what I would think would be this very basic question.

In awk, how can I loop over the input string character by character? Let's say I just wanted to print them out. Is there an array I can access? Or do I need to use substr?

Basically, something like:

echo "here is a string" | awk '
{ for(i=0; i<[length of input string]; i++) 
    printf [value at index i in array x]; 
}'

Frankly, I'm embarrassed.

like image 777
jasonmclose Avatar asked Sep 06 '25 11:09

jasonmclose


1 Answers

You can convert a string to an array using split:

echo "here is a string" | awk '
{ 
  split($0, chars, "")
  for (i=1; i <= length($0); i++) {
    printf("%s\n", chars[i])
  }
}'

This prints the characters vertically, one per line.

like image 116
Michael J. Barber Avatar answered Sep 10 '25 14:09

Michael J. Barber