Как правило, Bash не следует использовать в качестве текстового процессора, но это должно решить вашу задачу, если не опубликованы лучшие решения:
#!/bin/bash
input=/path/to/input
output=/path/to/output
while read -r record; do
if [[ "${record:0:1}" == 'H' ]]; then
x=$(awk -vr=${record//[[:alpha:]]/} 'BEGIN{print r / 1}')
echo "$record"
elif [[ -z "$record" ]]; then
echo
else
echo "${record}${x}"
fi
done <"$input" >"$output"
Будет прочитан ваш ввод строка за строкой. Если запись начинается с H
, она захватит число и разделит его на 1 (, чтобы удалить ведущие нули )и сохранить это в переменную x
, а затем echo
запись для выходного файла. Если запись представляет собой пустую строку, на выходе будет просто echo
пустая строка. Если запись не начинается с H
, она будет echo
с переменной x
в конце.