Мне нужно вырезать строки из файла фиксированной длины и вставить его в новый файл для строк, начинающихся с 180, а позиция 35 имеет «N». Я использую ** Баш **Удалить строку на основе значения столбца в unix
**Sample input file:**
070000001 075PRMAGDALENA F DEL 180AP997270518411 Y02092014
180AP997270518412 N02092014
180AP997270518413 N03212013
PAYMNT
190EM037490013798700
070000002 075PRRERUCHA TROY A 195097130808020800 070000003
180AP997270518423 Y03212013
**Sample input end**
Код: конец
while IFS= read -r line
do
## var=$((var+1))
if [ ${line:0:3} = '180' ] && [ ${line:34:1} = 'N' ] ;
then
echo $line > online_error.txt
else
echo $line > online_good.txt
fi
done <"$file"
Код
** запуска Выход **
180AP997270518423 N03212013
** Выходной конец ** В приведенном выше выводе пробелы теряются. Я бы хотел, чтобы мой вывод имел аналогичный интервал в качестве моей строки ввода. Буква «N» позиционируется в 35 в моем входном файле, где, как и в выводе, ставится на 19.
Если часть записи записывается в файл, однако я потерял форматирование. Мне нужно сохранить исходное форматирование, поскольку вывод из этого сценария вводится для другой программы мэйнфрейма.
Просьба представить предложения.
Что значит «Я потерял форматирование»? – Floris
Используйте 'echo '$ line" 'для сохранения интервала в строках. –
echo $ line, как-то не сохраняя промежуток – user3290216