Вы можете написать variable += 1
в строке выше. Реализуйте preincrement, увеличивая, до.
Я думаю, что ошибка происходит, если входное кодирование файла отличается от предпочтительного кодирования Вашей среды.
Пример: in
UTF-8
$ LANG=de_DE.UTF-8 sed 's/.*| //' < in
X
Y
$ LANG=de_DE.iso88591 sed 's/.*| //' < in
X
Y
UTF-8, может безопасно быть интерпретирован как ISO-8859-1, Вы получите странные символы, но кроме которого все прекрасно.
Пример: in
ISO-8859-1
$ LANG=de_DE.UTF-8 sed 's/.*| //' < in
X
Gras Och Stenar Trad - From MöY
$ LANG=de_DE.iso88591 sed 's/.*| //' < in
X
Y
ISO-8859-1, не может быть интерпретирован как UTF-8, декодируя входные сбои файла. Странное соответствие, вероятно вследствие того, что sed пытается восстановиться, а не перестать работать полностью.
ответ основан на Debian Lenny/Sid и sed 4.1.5.
sed
не очень хорошо установка для текста не в формате ASCII. Однако можно использовать (почти) тот же код в perl
и получить результат, который Вы хотите:
perl -pe 's/.*\| //' x