Вот общий подход, в котором мы можем указать количество символов, после которого вы хотите вставить строку. Использование функций GNU awk
RS
, FS
, gsub
. Протестировано с GNU awk
и только с предоставленными сэмплами. (Хорошо, я только что проверил, чтобы вставить НОВЫЙ символ после 5 символов, и это работало довольно хорошо :))
awk -v noc="4" -v char="\047\n || \047" -v RS="" -v FS="\n" '{num=num==noc?(noc-1):noc;gsub(".{"num"}","&" char)} 1' Input_file
Добавлениеформа решения не с одним вкладышем:
awk -v noc="4" -v char="\047\n || \047" -v RS="" -v FS="\n" '
{
num=num==noc?(noc-1):noc
gsub(".{"num"}","&" char)
}
1
' Input_file
Вывод будет следующим:
aaaa'
|| 'aa
b'
|| 'bbbb'
|| 'b
Объяснение вышеприведенного кода: Добавление полного объяснения вышеприведенного кода.
awk -v noc="4" -v char="\047\n || \047" -v RS="" -v FS="\n" ' ##Mentioning noc=4 for number of characters after which we want to insert new character\
## , mentioning char variable with value which OP wants to insert. \
## Making RS NULL here, making FS as new line here for all lines of Input_file
{
num=num==noc?(noc-1):noc ##Creating variable num whose value is noc-1 when it is 4 and 4 when it is NOT 4.
gsub(".{"num"}","&" char) ##Using gsub function to give number of characters which need to be substitutes with new char here.
}
1 ##Mentioning 1 will print edited/non-edited line of Input_file.
' Input_file ##Mentioning Input_file name here.