Если вы используете zsh
, вы можете просто назначить содержимое такого файла:
p="`cat file_to_be_read`"
Использованиеsed
:
sed 's/,*$//' infile
это будет соответствовать нулю или более запятым в конце каждой строки. В некоторых реализациях sed
вы можете указать sed
сопоставить один или несколько в конце с:
sed 's/,\+$//' infile
(переносимым/стандартным эквивалентом является ,\{1,\}
, так что вы можете также использовать ,,*
или ,*
, которые сделают то же самое ).
Или с GNU grep
или совместимым:
grep -o '.*[^,]'
Это напечатает только -o
все, пока последняя не -запятая (будет иметь побочный эффект удаления пустых строк, хотя ).
Или с GNU awk
илиmawk
:
awk '1' RS=',*\n' #or
awk '1' RS=',+\n'
Это определяет R оператор записи S как регулярное выражение из,*\n
(ноль запятых или,+\n
(одну или несколько запятых )до \n
ewline.
В 1
есть просто всегда истинное условие, которое приводит к печати записей и игнорированию RS .
Или вperl
:
perl -pe 's/,*$//' #or
perl -pe 's/,+$//'
$ sed 's/,,*$//' input
Это заменит все запятые в конце строки ничем (они будут удалены ).
,,*$
будет соответствовать одной или нескольким запятым в конце строки (буквально «одна запятая, а затем ноль запятых или более» ).
Другой способ сделать это состоит в том, чтобы исправить то, что производит данные так, чтобы оно не выводило пустые поля.