INTELLIGENT WORK FORUMS
FOR COMPUTER PROFESSIONALS

Log In

Come Join Us!

Are you a
Computer / IT professional?
Join Tek-Tips Forums!
  • Talk With Other Members
  • Be Notified Of Responses
    To Your Posts
  • Keyword Search
  • One-Click Access To Your
    Favorite Forums
  • Automated Signatures
    On Your Posts
  • Best Of All, It's Free!

*Tek-Tips's functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

Posting Guidelines

Promoting, selling, recruiting, coursework and thesis posting is forbidden.

Jobs

split string / add spaces in different positions

split string / add spaces in different positions

(OP)
I need to split long string (best with sed or awk), adding space after 3, 7, 12 and 19 character, for example input string:

CODE --> code

23092034920934iqke029i39i2340234i0293 

and expected output:

CODE --> code

230 9203 49209 34iqke0 29i39i2340234i0293 



CODE --> code

230 
   9203 
       49209
            34iqke0
                   29i39i2340234i0293
1234567890123456789012345678901234567890 

RE: split string / add spaces in different positions

(OP)
ok, I've done following command which does the trick

CODE

$ echo "23092034920934iqke029i39i2340234i0293 "|sed 's/.../&\ /;s/......../&\ /;s/............../&\ /;s/....................../&\ /'
230 9203 49209 34iqke0 29i39i2340234i0293 

RE: split string / add spaces in different positions

Hi

I am quite late at this party, but maybe you will find some of these alternatives abit more readable :

CODE --> command line

master # echo "23092034920934iqke029i39i2340234i0293 " | sed 's/.\{19\}/& /;s/.\{12\}/& /;s/.\{7\}/& /;s/.\{3\}/& /'
230 9203 49209 34iqke0 29i39i2340234i0293 

master # echo "23092034920934iqke029i39i2340234i0293 " | sed -r 's/.{19}/& /;s/.{12}/& /;s/.{7}/& /;s/.{3}/& /'
230 9203 49209 34iqke0 29i39i2340234i0293 

master # echo "23092034920934iqke029i39i2340234i0293 " | sed 's/./& /19;s/./& /12;s/./& /7;s/./& /3' # (*)
230 9203 49209 34iqke0 29i39i2340234i0293 

master # echo "23092034920934iqke029i39i2340234i0293 " | cut --output-delimiter=' ' -c -3,4-7,8-12,13-19,20-
230 9203 49209 34iqke0 29i39i2340234i0293 

master # echo "23092034920934iqke029i39i2340234i0293 " | gawk -vFIELDWIDTHS='3 4 5 7 18' '$1=$1'
230 9203 49209 34iqke0 29i39i2340234i0293 
The marked (*) solution should work with any standard Sed. All others assume implementation supporting GNU-specific extensions.

Feherke.
feherke.ga

Red Flag This Post

Please let us know here why this post is inappropriate. Reasons such as off-topic, duplicates, flames, illegal, vulgar, or students posting their homework.

Red Flag Submitted

Thank you for helping keep Tek-Tips Forums free from inappropriate posts.
The Tek-Tips staff will check this out and take appropriate action.

Reply To This Thread

Posting in the Tek-Tips forums is a member-only feature.

Click Here to join Tek-Tips and talk with other members!

Resources

Close Box

Join Tek-Tips® Today!

Join your peers on the Internet's largest technical computer professional community.
It's easy to join and it's free.

Here's Why Members Love Tek-Tips Forums:

Register now while it's still free!

Already a member? Close this window and log in.

Join Us             Close