У меня есть такой файл,
"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 - это немного больше прощения по этому поводу ...