Я использую Баш скрипт и у меня есть позиционное файл вроде этого:Заменить Пустое поле Х на позиционный файл
ID(10c) NAME(10c) CITY(10c)
ID(10c) NAME(10c) CITY(10c)
для примера, если у меня есть
123456 TOTO
123457 PARIS
Я хочу, чтобы этот вывод:
123406 TOTO XXXXX
123407 XXXXX PARIS
Мне нужно реализовать этот алгоритм:
- ID = идентификатор (0,4) + 0 + идентификатор (6)
- если имя пустое заменить имя ХХХХХ
- если город пуст заменить город ХХХХХ
- Написать сгенерированную строку в темп файл
То, что я пробовал:
awk 'BEGIN {FIELDWIDTHS="10 10 10"}{$ID = $1;$NAME = $2;$CITY = $3;$ID = substr($ID,1,4)0substr($ID,6);if ($NAME ~ /^\s*$/) $NAME = "XXXXX ";if ($CITY ~ /^\s*$/) $CITY = "XXXXX ";PRINT $ID$NAME$CITY}1' $FILEINPUT >> $FILEINPUT.tmp
отсутствуют поля, замененные пробелами? (записи фиксированной ширины?) NAME и CITY могут содержать пробелы? –
Да: ID (10char) ИМЯ (10char) CITY (10char) Но если имя или город фидов пусто, вам нужно добавить XXXXX только x5, а не длину поля NAME и CITY. Они могут содержать пустые места –
(я обновил свою тему) –