Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I have a file looking like this,

"xxxxxx"
"yyyyyy"
"aaaaaa"
"cccccc"
"bbbbbb"
"eeeeee"
"oooooo"
"zzzzzz"

Wanting to replace each \n in this file I use:

tr '\n' ',' < INPUT > OUTPUT

Which works fine. The output is to be expected:

"xxxxxx","yyyyyy","aaaaaa","cccccc"....

However

I can't do any manipulation using sed or awk on this file, none what so ever (the result is always blank, like: sed 's/,/hello/g' displays nothing), in Linux using the GNU package this works fine, but with non GNU not. Can anyone tell me why this is?

Thanks in advance,

Anders

share|improve this question
add comment

1 Answer

up vote 2 down vote accepted
# ls
testfile.txt
# /usr/xpg4/bin/tr '\n' ',' < testfile.txt
"xxxxxx","yyyyyy","aaaaaa","cccccc","bbbbbb","eeeeee","oooooo","zzzzzz",,# 
# /usr/xpg4/bin/tr '\n' ',' < testfile.txt | sed 's/,/hello/g'
# ls -l /usr/xpg4/bin/sed
-r-xr-xr-x   1 root     bin        27460 Apr  7  2002 /usr/xpg4/bin/sed
# /usr/xpg4/bin/tr '\n' ',' < testfile.txt | /usr/xpg4/bin/sed 's/,/hello/g'
sed: Missing newline at end of file standard input.
"xxxxxx"hello"yyyyyy"hello"aaaaaa"hello"cccccc"hello"bbbbbb"hello"eeeeee"hello"oooooo"hello"zzzzzz"hellohello
# command -v sed
/usr/bin/sed

It seems sed is to blame, not tr ... . Using XPG4 sed does seem to fix the problem. As to why exactly, grrrrmmm... .

Edit: actually, when I add a newline to the output of the tr command, it does work with both sed editions, so I suppose /usr/bin/sed really needs a newline, and /usr/xpg4/bin/sed is a little more forgiving on the matter... .

share|improve this answer
    
Sweet, I forgot about xpg4 sed! –  Anders Jul 29 '10 at 14:51
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.