2017-02-10 13 views
-2

Я имею дело с строками данных, которые довольно длинны и поэтому имеют больше символов, чем ширина терминала. Когда я использую sed, awk и т. Д., Чтобы добавить любой символ в конец каждой строки, он соответствует концу строки, где бы ни была ширина терминала. Поэтому вместо добавления желаемого символа в конец каждой строки он попадает куда-то посередине каждой строки, где ширина терминала отключается.

Как исправить эту проблему?

+2

Не можете ли вы добавить пример на ваш вопрос? То, что вы описываете, звучит довольно странно. – choroba

+4

Можете ли вы показать конкретный пример? Я скептически настроен. – chepner

+0

Perhap OP - это копирование и вставка ввода в терминал или редактор, который автоматически вставляет разрывы строк. Или некоторые такие. – rici

ответ

1

Может быть, ваш файл имеет CRFL (возврат каретки - подачи линии или \r - \n) строка, заканчивающаяся, где не подходит (например, файл для Windows в системе Linux или ... или ...). Если вы пишете больше чем-a-terminal-widths значение a s в файл (1. Я нахожусь в Linux и 2. не нажимаю введите в конце терминала, всего один раз после всех многих a s и после этого один ввести пресс Ctrl - D):

$ cat > pure_file 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
aaaaaaaaaaaaaaaaaaaa[the only enter and ctrl-D goes here] 

Ваш файл-концовка выглядит следующим образом:

...aaaaLF 

Затем добавить CR к концу:

$ awk '{print $0 "\r"}' pure_file > cr_infected_file 

(или просто использовать unix2dos выше) и файл концовка выглядит следующим образом:

...aaaaCRLF 

Теперь добавьте символ X к концу этого:

$ awk '{print $0 "X"}' cr_infected_file 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
Xaaaaaaaaaaaaaaaaaaaa 

и хвост выглядит (добавлено 2 пространства вокруг X для вашего удовольствия чтения):

...aaaaCR X LF 

Что происходит, что сначала все a s получить outputed, то CRвозвращает каретку к началу строки (текущей строки, линия 2 на терминале), а затем X получить outputed.