Назад | Перейти на главную страницу

Странность использования / 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. Кто-нибудь может сказать мне, почему это так?

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

Андерс

# 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

Вроде виноват sed, а не tr .... Использование XPG4 sed, похоже, решает проблему. А почему именно, грррмммм ...

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