Подтвердить что ты не робот

Как вставить новый символ строки после фиксированного количества символов в файле

Я ищу bash или sed script (желательно однострочный), с помощью которого я могу вставить новый символ строки после фиксированного количества символов в огромном текстовом файле.

4b9b3361

Ответ 1

Как насчет чего-то подобного? Изменить 20 - количество символов перед новой строкой, а temp.text - это файл, который нужно заменить.

sed -e "s/.\{20\}/&\n/g" < temp.txt

Ответ 2

Вот решение POSIX:

awk '{gsub(/.{5}/,"&\n")}1' file

Или:

fold -w5 file

Input:

banana strawberry grape

Вывод:

banan
a str
awber
ry gr
ape

Интересно, что решение Awk более эффективно, чем сгиб.

Ответ 3

Пусть N - переменная оболочки, представляющая количество символов, после которых вы хотите использовать новую строку. Если вы хотите продолжить подсчет по линиям:

perl -0xff -pe 's/(.{'$N'})/$1\n/sg' input

Если вы хотите перезапустить счетчик для каждой строки, опустите аргумент -0xff.

Ответ 4

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

gawk 'BEGIN{ FS=""; ch=30}
{
    for(i=1;i<=NF;i++){
        c+=1
        if (c==ch){
            print "" 
            c=0           
        }else{
            printf $i
        }
    }
    print ""
}' file

если вы имеете в виду вставку с определенным количеством символов в каждой строке, например, после каждого 5-го символа

gawk 'BEGIN{ FS=""; ch=5}
{
    print substr($0,1,ch) "\n" substr($0,ch)
}' file

Ответ 5

Добавить пустую строку после строки с ровно 42 символами

sed -ie '/^.\{42\}$/a\
' huge_text_file

Ответ 6

Это может сработать для вас:

echo aaaaaaaaaaaaaaaaaaaax | sed 's/./&\n/20'
aaaaaaaaaaaaaaaaaaaa
x