# How to split a string with no delimiter

**URL:** <https://community.unix.com/t/how-to-split-a-string-with-no-delimiter/283652>\
**Category:** Shell Programming and Scripting\
**Created:** [March 1, 2011, 9:06am UTC](https://community.unix.com/t/how-to-split-a-string-with-no-delimiter/283652 "2011-03-01T09:06:43Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![saint34](https://community.unix.com/letter_avatar/saint34/32/6_22734026db12803ebb3e059622ac3534.png) [@saint34](https://community.unix.com/u/saint34)\
**Post date:** [March 1, 2011, 9:06am UTC](https://community.unix.com/t/how-to-split-a-string-with-no-delimiter/283652/1 "2011-03-01T09:06:43Z")

</div>

Hi;

I want to write a shell script that will split a string with no delimiter.  
Basically the script will read a line from a file.

For example the line it read from the file contains:  
99234523

These values are never the same but the length will always be 8.

How do i split this string into 4 sections of 2?

Thanks

---

<div class="post-metadata">

**Author:** ![bartus11](https://community.unix.com/user_avatar/community.unix.com/bartus11/32/1418_2.png) [@bartus11](https://community.unix.com/u/bartus11)\
**Post date:** [March 1, 2011, 9:16am UTC](https://community.unix.com/t/how-to-split-a-string-with-no-delimiter/283652/2 "2011-03-01T09:16:18Z")

</div>

Try:

```nohighlight
perl -pe 's/(..)/\1 /g' file

```

---

<div class="post-metadata">

**Author:** ![radoulov](https://community.unix.com/user_avatar/community.unix.com/radoulov/32/489_2.png) [@radoulov](https://community.unix.com/u/radoulov)\
**Post date:** [March 1, 2011, 9:18am UTC](https://community.unix.com/t/how-to-split-a-string-with-no-delimiter/283652/3 "2011-03-01T09:18:37Z")

</div>

```nohighlight
% fold -2 infile
99
23
45
23

```

---

<div class="post-metadata">

**Author:** ![kshji](https://community.unix.com/user_avatar/community.unix.com/kshji/32/15661_2.png) [@kshji](https://community.unix.com/u/kshji)\
**Post date:** [March 1, 2011, 9:22am UTC](https://community.unix.com/t/how-to-split-a-string-with-no-delimiter/283652/4 "2011-03-01T09:22:42Z")

</div>

Bash, ksh93, ...

```nohighlight
while read line
do
      a=${line:0:2}
      b=${line:2:2}
      c=${line:4:2}
      d=${line:6:2}
done

```

---

<div class="post-metadata">

**Author:** ![saint34](https://community.unix.com/letter_avatar/saint34/32/6_22734026db12803ebb3e059622ac3534.png) [@saint34](https://community.unix.com/u/saint34)\
**Post date:** [March 1, 2011, 9:36am UTC](https://community.unix.com/t/how-to-split-a-string-with-no-delimiter/283652/5 "2011-03-01T09:36:09Z")

</div>

Sorry forgot to say this will be a shell script

Thanks

---

<div class="post-metadata">

**Author:** ![Corona688](https://community.unix.com/letter_avatar/corona688/32/6_22734026db12803ebb3e059622ac3534.png) [@Corona688](https://community.unix.com/u/Corona688)\
**Post date:** [March 1, 2011, 10:21am UTC](https://community.unix.com/t/how-to-split-a-string-with-no-delimiter/283652/6 "2011-03-01T10:21:24Z")

</div>

But what shell?

---

<div class="post-metadata">

**Author:** ![yinyuemi](https://community.unix.com/letter_avatar/yinyuemi/32/6_22734026db12803ebb3e059622ac3534.png) [@yinyuemi](https://community.unix.com/u/yinyuemi)\
**Post date:** [March 1, 2011, 1:20pm UTC](https://community.unix.com/t/how-to-split-a-string-with-no-delimiter/283652/7 "2011-03-01T13:20:04Z")

</div>

```nohighlight
echo "99234523" |awk 'BEGIN{FIELDWIDTHS="2 2 2 2"}{print $1 RS $2 RS $3 RS $4}'
99
23
45
23

```

---

<div class="post-metadata">

**Author:** ![ctsgnb](https://community.unix.com/letter_avatar/ctsgnb/32/6_22734026db12803ebb3e059622ac3534.png) [@ctsgnb](https://community.unix.com/u/ctsgnb)\
**Post date:** [March 1, 2011, 1:41pm UTC](https://community.unix.com/t/how-to-split-a-string-with-no-delimiter/283652/8 "2011-03-01T13:41:51Z")

</div>

+1 for Radulov 😃

another way ...heavy but fun :

```nohighlight
echo "99234523" | sed 's/../& /g' | xargs -n1

```

---

<div class="post-metadata">

**Author:** ![alister](https://community.unix.com/letter_avatar/alister/32/6_22734026db12803ebb3e059622ac3534.png) [@alister](https://community.unix.com/u/alister)\
**Post date:** [March 1, 2011, 2:27pm UTC](https://community.unix.com/t/how-to-split-a-string-with-no-delimiter/283652/9 "2011-03-01T14:27:17Z")

</div>

A portable, sh-only approach, in case that is desired (it's not pretty but it should be efficient):

```nohighlight
#!/bin/sh

while IFS= read -r line; do
    word1=${line%??????}
    temp=${line%????}
    word2=${temp#??}
    temp=${line%??}
    word3=${temp#????}
    word4=${line#??????}
    printf '%s %s %s %s\n' "$word1" "$word2" "$word3" "$word4"
done

```

If, instead, each word should be on its own line, change the printf statement to:

```nohighlight
printf '%s\n' "$word1" "$word2" "$word3" "$word4"

```

Regards,  
Alister
