С помощью GNU awk вы можете
gawk -v start=5 -v end=8 '{
mid = substr($0, start, end-start+1)
print substr($0, 1, start-1) gensub(/./, "N", "g", mid) substr($0, end+1)
}' file
Или с perl
perl -spe 'substr($_, $start-1, $end-$start+1) =~ s/./N/g' -- -start=5 -end=8 file
В обоих решениях мы передаем начальное и конечное значения программе с параметрами командной строки. Это упрощает изменение значений внутри сценария оболочки. Если вам нужно сделать символ замены N динамическим, это должно быть довольно очевидно, как это сделать.
$ sed 'N; s/\n/ /' file
01 DAVIDS 800 ABC VISAL NAGAR, ABC BUILDING HYD TELANGANA 6000 DEVELOPER HR DEPT FULL TIME EMPLOYEE
02 KAMAL 900 XYZ KAMAN NAGAR, DEF BUILDING SEC TELANGANA 8000 DEVELOPER MR DEPT FULL TIME EMPLOYEE
Это использует sed
для внесения необходимых изменений.
Для каждой строки исходного файла считывается следующая строка и добавляется к текущей строке с символом новой строки в качестве разделителя. Это делается с помощью команды N
в sed
. Затем используется команда s///
для замены разделительного символа новой строки двумя пробелами.
Перенаправить вывод в файл с новым именем, чтобы сохранить его, например.
sed 'N; s/\n/ /' file >newfile