URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 4889
[ Назад ]

Исходное сообщение
"Вывести строку без последнего символа"

Отправлено San , 30-Ноя-05 13:01 
Есть текстовый файлик вида

переменная1,переменная2,переменная3,
переменная4,переменная5,переменная6,
переменная7,переменная8,переменная9,

Надо поудалять последние запятые в каждой строке.
Как бы это поэлегантнее сделать?


Содержание

Сообщения в этом обсуждении
"Вывести строку без последнего символа"
Отправлено m , 30-Ноя-05 13:05 
may be : sed -r 's/(.*),$/\1/'

"Вывести строку без последнего символа"
Отправлено San , 30-Ноя-05 15:56 
>may be : sed -r 's/(.*),$/\1/'

Под SCO у меня оно. Под 7.1.3

на "-r" ругается:
UX:sed: ERROR: Illegal option -- r

А если без "-r", то:
cat file.txt | sed 's/(.*),$/\1/'
UX:sed: ERROR: Command garbled: s/(.*),$/\1/


"Вывести строку без последнего символа"
Отправлено madskull , 30-Ноя-05 15:57 
>may be : sed -r 's/(.*),$/\1/'
а может, все-таки
sed 's/.$//'

"Вывести строку без последнего символа"
Отправлено dimcha , 30-Ноя-05 18:18 
>>may be : sed -r 's/(.*),$/\1/'
>а может, все-таки
>sed 's/.$//'

хорошее решение


"Вывести строку без последнего символа"
Отправлено San , 02-Дек-05 07:58 
>>may be : sed -r 's/(.*),$/\1/'
>а может, все-таки
>sed 's/.$//'

А вот это - идеальное решение!
Работает везде! Спасибо!


"Вывести строку без последнего символа"
Отправлено dimcha , 30-Ноя-05 14:01 
>Есть текстовый файлик вида
>
>переменная1,переменная2,переменная3,
>переменная4,переменная5,переменная6,
>переменная7,переменная8,переменная9,
>
>Надо поудалять последние запятые в каждой строке.
>Как бы это поэлегантнее сделать?

$ cat file | perl -lane 'chomp; $s = $_; $s = $1 if $s =~ /^(.*)[,]$/; print $s . "\n";' > file2


"Вывести строку без последнего символа"
Отправлено San , 30-Ноя-05 15:57 
>>Есть текстовый файлик вида
>>
>>переменная1,переменная2,переменная3,
>>переменная4,переменная5,переменная6,
>>переменная7,переменная8,переменная9,
>>
>>Надо поудалять последние запятые в каждой строке.
>>Как бы это поэлегантнее сделать?
>
>$ cat file | perl -lane 'chomp; $s = $_; $s = $1 if $s =~ /^(.*)[,]$/; print $s . "\n";' > file2

А можно не прибегая к перлу?
На чистом bash-скрипте?


"Вывести строку без последнего символа"
Отправлено vnp , 02-Дек-05 02:34 
>На чистом bash-скрипте?


while read; do echo ${REPLY%,}; done < file


"Вывести строку без последнего символа"
Отправлено San , 02-Дек-05 07:56 
>>На чистом bash-скрипте?
>
>
>while read; do echo ${REPLY%,}; done < file

Спасибо! Это заработало!
Правда только на редхате, а на SCO видимо bash более древний и не работает как надо.


"Вывести строку без последнего символа"
Отправлено mezantrop , 30-Ноя-05 17:40 
>Есть текстовый файлик вида
>
>переменная1,переменная2,переменная3,
>переменная4,переменная5,переменная6,
>переменная7,переменная8,переменная9,
>
>Надо поудалять последние запятые в каждой строке.
>Как бы это поэлегантнее сделать?
$ cat test.txt
v1,v2,v3,
v4,v5,v6,
v7,v8,v9,

$ cut -f1,2,3 -d, test.txt
v1,v2,v3
v4,v5,v6
v7,v8,v9


"Вывести строку без последнего символа"
Отправлено San , 01-Дек-05 12:16 
>>Как бы это поэлегантнее сделать?
>$ cat test.txt
>v1,v2,v3,
>v4,v5,v6,
>v7,v8,v9,
>
>$ cut -f1,2,3 -d, test.txt
>v1,v2,v3
>v4,v5,v6
>v7,v8,v9

Работает, но если количество переменных в строках будет разным, то облом.