Странность с использованием /usr/xpg4/bin/tr и /usr/bin/tr в Solaris 9

У меня есть файл, похожий на этот,

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

Желая заменить каждый \n в этом файле я использую:

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

Который работает отлично. Ожидаемый результат:

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

тем не мение

Я не могу делать какие-либо манипуляции с помощью sed или же awk в этом файле нет ничего такого (результат всегда пуст, например: sed 's/,/hello/g' ничего не отображается), в Linux с использованием пакета GNU это работает нормально, но с не GNU нет. Может кто-нибудь сказать мне, почему это?

Заранее спасибо,

Андерс

1 ответ

Решение
# 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

Кажется, виноват сед, а не тр... Использование XPG4 sed, похоже, решает проблему. Что касается того, почему именно, grrrrmmm...

Редактировать: на самом деле, когда я добавляю новую строку в вывод команды tr, она работает с обеими версиями sed, поэтому я предполагаю, что / usr / bin / sed действительно нужна новая строка, а /usr/xpg4/bin/sed - это немного больше прощения по этому вопросу...

Другие вопросы по тегам