Я хотел бы заменить определенные символы в файле Unix, который не имеет никакой строки.
Я пытался использовать SED, но поскольку в файле нет разрыва строк, я получил нулевой байтовый выходной файл.

Sed 's / forms = 11111 / forms = 22222 / g' file.txt> out.txt

У меня нет команды BBE. Может кто-нибудь предложить решение?

0
pat 20 Май 2021 в 22:49
Какова длина очереди? Вы можете нам это показать?
 – 
Beta
21 Май 2021 в 04:32
Текстовый файл может иметь размер в сотни килобайт, но не содержит разрыв строки.
 – 
pat
21 Май 2021 в 16:55
Строка может быть слишком длинной для правильной обработки sed. Я бы, наверное, написал для этого немного C ++.
 – 
Beta
21 Май 2021 в 17:11
В текстовом файле должны быть строки фиксированной длины, но по некоторым причинам разрывы строк отсутствуют. Например, если размер текстового файла составляет 1000 байт, а строки должны состоять из 100 символов, то в текстовом файле 10 строк без разрывов строк.
 – 
pat
21 Май 2021 в 22:37
Вам нужно заменить символы или строки? Если только символы, попробуйте tr.
 – 
Alexander Volkovsky
22 Май 2021 в 00:35

1 ответ

Лучший ответ

Вы сказали :

Текстовый файл должен иметь в нем строки длины, но по некоторым причинам перерывы линии исчезли.

Таким образом, вы можете использовать команду fold, чтобы обернуть текст в определенный размер, а затем запустить sed над генерированными строками:

cat file.txt | fold -w <size> | sed ...
1
Alexander Volkovsky 22 Май 2021 в 00:46
Команда sed работает, но выходной файл содержит разрывы строк, которые мне не нужны.
 – 
pat
23 Май 2021 в 22:54
Вы можете использовать tr -d '\n' или paste -sd '', чтобы объединить строки в одну.
 – 
Alexander Volkovsky
23 Май 2021 в 23:46