I am trying to do this with one small tweak. I would also like to use a space as a delimiter.
sed 's/[,.!?] */\
/g' file
This is what my file looks like.
server1, server2, server3
server4 server5 server6
I would like it to look like this.
server1
server2
server3
server4
server5
server6
This was some of my ideas for a solution.
sed 's/[,.!? ] */\
/g' file
server1
server2
server3
server4 server5 server6
sed 's/[,.!? ] */\
/g' file
server1
server2
server3
server4 server5 server6
sed 's/[,.!? ""] */\
/g' file
server1
server2
server3
server4 server5 server6
sed 's/[,.!? " "] */\
/g' file
server1
server2
server3
server4 server5 server6
sed 's/[,.!? ''] */\
/g' file
server1
server2
server3
server4 server5 server6
sed 's/[,.!? ' '] */\
/g' file
sed: 0602-404 Function s/[,.!? cannot be parsed.
[RIGHT][/RIGHT]Including a space in the [ ] is okay but there is also (at least) one following space.
So either have
/[,.!? ] */
i.e. a following space is not required; this would also cover
server1,server2,server3
Or have
/[,.!?]\{0,1\} */
i.e. a [ ] character may occur 0 or 1 times, followed by (at least) one space.
So two spaces vs one space makes a big difference it seems? Do you know why it adds an extra space?
sed 's/[,.!? ] */\
/g' file
server1
server2
server3
server4 server5 server6
sed 's/[,.!? ] */\
/g' file
server1
server2
server3
server4
server5
server6
Do you know this adds an extra space?
sed 's/[,.!?]\{0,1\} */\
/g' file
server1
server2
server3
server4
server5
server6
You mean the extra line?
I guess there is a space character after the server3
; this extra space is converted to an extra newline.
1 Like
apmcd47
5
This?
printf "%s\n" $( tr -s ' ,.!?' ' ' <file_name)
server1
server2
server3
server4
server5
server6
tr
turns all the expected delimiters to spaces and printf
prints one per line.
Andrew
In tr the number of characters in arg1 should match the number in arg2 - otherwise the behavior is not possible.
Convert directly to newline:
tr -s ' ,!' '\n\n\n' < filename
apmcd47
7
Okay, sorry about that. I've gotten used to the GNU tr which does allow that behaviour. Now I've checked with Solaris I see your're right.
Andrew