Как добавить строку в конце всех строк?

Я пытаюсь добавить строку в конец всех строк в текстовый файл, но у меня ошибка где-то.

пример:

у меня это в текстовом файле:

begin--fr.a2dfp.net
begin--m.fr.a2dfp.net
begin--mfr.a2dfp.net
begin--ad.a8.net
begin--asy.a8ww.net
begin--abcstats.com
...

Я бегу:

sed -i "s|x0D$|--end|" file.txt

а я:

begin--fr.a2dfp.net--end
begin--m.fr.a2dfp.net--end
begin--mfr.a2dfp.net--end
begin--ad.a8.net
begin--asy.a8ww.net--end
begin--abcstats.com
...

строка добавляется только в определенные строки, а не в другие.

есть идеи почему?

2
задан kenorb
18.04.2023 14:52 Количество просмотров материала 2690
Распечатать страницу

3 ответа

\x0D возврат каретки, который может быть виден или не отображаться в текстовом редакторе. Поэтому, если вы редактировали файл как в Windows, так и в системе Unix/Linux, может быть сочетание новых строк. Если вы хотите надежно удалить возврат каретки, используйте dos2unix. Если вы действительно хотите добавить текст в конец строки, просто используйте sed -i "s|$|--end|" file.txt.

10
отвечен l0b0 2023-04-19 22:40

может есть способы сделать это:

  1. Perl

    perl -i -pe 's/$/--end/' file.txt
    
  2. sed

    sed -i 's/$/--end/' file.txt
    
  3. awk

    awk '{$NF=$NF"--end"; print}' file.txt > foo && mv foo file.txt
    
  4. shell

    while IFS= read -r l; do 
     echo "$l""--end"; 
    done < file.txt > foo && mv foo file.txt
    
4
отвечен terdon 2023-04-20 00:57

вы можете попробовать использовать ex:

ex +"%s/$/--end/g" -cwq foo.txt 

что эквивалентно vi -e.

опции -i не совсем совместим между Linux и Unix и может быть недоступен в других операционных системах.

0
отвечен kenorb 2023-04-20 03:14

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх