Я ищу bash или sed script (желательно однострочный), с помощью которого я могу вставить новый символ строки после фиксированного количества символов в огромном текстовом файле.
Как вставить новый символ строки после фиксированного количества символов в файле
Ответ 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