![]() |
|
|
Google unix.com
|
|||||||
| Форумы | Регистрация | Правила форума | Ссылки | Альбомы | ЧАВО | Список участников | Календарь | Поиск | Сегодняшние сообщения | Отметить форумы читать |
| Shell программирование и сценарии Почтовые вопросы о KSH, CSH, SH, BASH, Perl, PHP, SED, AWK и скрипты оболочки и оболочки скриптовых языков здесь. |
Подробнее UNIX и Linux Темы форума можно найти полезные
|
||||
| Нить | Резьба для начинающих | Форум | Ответы | Последнее сообщение |
| Не удалось вставить данные через Crontab | megh | SUN Solaris | 2 | 12-29-2008 08:36 AM |
| Не удалось вставить данные | megh | SUN Solaris | 1 | 12-05-2008 12:20 AM |
| удалось включить данные. DAT файла. XLS может кто поможет мне | kreddy2003 | Shell программирование и сценарии | 1 | 05-28-2008 06:33 AM |
| помочь мне для вставки данных | Бабу @ корпуса | UNIX для чайников Вопросы И Ответы | 10 | 10-24-2006 03:25 AM |
| SED вставить данные из файла в другой? | ctcuser | Shell программирование и сценарии | 4 | 05-03-2005 02:43 PM |
![]() |
|
|
LinkBack | Резьба Инструменты | Искать в этом Thread | Оценить Thread | Режимы дисплея |
|
|
|
||||
|
Как ввести данные перед некоторых местах в ряду данных мер в зависимости от значений в строку
Привет Мне необходимо делать некоторые вещи, как "найти и добавить, что перед" в файл, который содержит много записей. Это будет ясно в следующем примере. Оригинал записи данных должны быть некоторые вещи, как эта Код:
60119827 RTMS_LOCATION_CDR INSTANT_POSITION_QUERY 1236574686123083rtmssrv7 20090309102806279 441 442
783 WEB 1568 GMLC919443259137 FAILURE6 1236574665595654lessrv1
но из-за ряда ошибок в системе файл имеет одну недостающую информацию, и она выглядит Код:
60119827 RTMS_LOCATION_CDR INSTANT_POSITION_QUERY 1236574686123083rtmssrv7 20090309102806279 442
783 WEB 1568 GMLC919443259137 FAILURE6 1236574665595654lessrv1
как есть 248 charaters длины. но во втором отчете одна данных отсутствует т.е. 441 Мне нужно вставить 441 именно в этой позиции, если 442 доступен в следующем данных. его некоторые вещи, как делать заявления ... Я буду с разными значениями вместо 442, и их соответствующую прежней позиции данных Как идти о какой-либо одной ... помочь мне ... Меня много ошибок, как и файлы, это следует рассматривать, и поэтому я могу сделать что-либо, как загрузить в БД и вставки данных, основанных на ценностях в строку на позиции я говорил раньше (442) Помощь меня!!! |
|
|||||
|
Привет, Как уже было сказано, вы действительно нужно определить шаблон / структуру файла, включая точное число области, где данные должны быть изменены или, по крайней мере одна группа конкретных значений в соответствии с которым скрипта для поиска файлов, а также добавить чего не хватает. Только за предоставленную вам первая идея, если конкретные значения 441 и 442, то в следующий KornShell скрипт сделает работу Код:
#!/bin/ksh
RESULT=""
while read LINE
do
for ITERATOR in $LINE
do
if [[ $ITERATOR = "442" ]]
then
RESULT="$RESULT 441 $ITERATOR"
else
RESULT="$RESULT $ITERATOR"
fi
done
RESULT="$RESULT\n"
done < $1
print "$RESULT" > $1
Так что, если Существуют несколько значений, вы можете задать их в за петлю. Тем не менее, это работает, если и только если разделители в файле имеют значения по умолчанию для IFS, которая, \ N \ T и ''. Привет,
|
|
||||
|
Привет
Где я могу упомянуть имя файла для чтения строки из ... в ур сценарий. |
|
|||||
|
Цитата:
$. / Myscript.ksh MyFile |
|
||||
|
Привет
Его рабочий, но есть перераспределение в данный интервал. Существующие данные позиции не должна быть нарушена, и количество символов, 248 должны быть сохранены в результате слишком Там будут пробелы в конце каждой строки, и в данный период, как хорошо. пустое пространство indiactes нет данных для этой области. Собственно Существуют определенные имена полей, в которых создаются отчеты, если это поле не в докладе, будет пустое место упомянуть о том, что. Мне нужно сохранить длина 248 символов. После этого файл будет отправлен для форматирования разных формата в другой сервер. Такие данные должны быть неизменными. там должно быть 11 пробелами после времени: 20090309102806279 После этого мне нужно вставить 441 при 442 присутствует. |
|
|||||
|
Очень сложно в сценарий оболочки для обработки строки с пробелами ... Попробуйте этот код и начать что-нибудь типа:. / Myscript INFILE outfile Допустим, стоимость 441/442 на позициях 116 и 130. Если несколько строк содержит символ #, изменения в сценарий с другой, не используемых символов. Код:
#!/bin/ksh
POS1=116 ; VAL1=441
POS2=130 ; VAL2=442
VAL_LEN=3
XPOS1=$((POS1 + $VAL_LEN - 1))
XPOS2=$((POS2 + $VAL_LEN - 1))
echo POS1=$POS1,XPOS1=$XPOS1
echo POS2=$POS2,XPOS2=$XPOS2
infile=$1
outfile=$2
NBL=$(wc -l $infile)
NBC=0
while [ $NBC -lt $NBL ]
do
(( NBC = NBC + 1 ))
xval1=$(head -$NBC $infile | tail -1 | cut -b$POS1-$XPOS1)
xval2=$(head -$NBC $infile | tail -1 | cut -b$POS2-$XPOS2)
if [ "$xval2" = "$VAL2" ]
then
if [ "$xval1" = "$VAL1" ]
then
head -$NBC $infile | tail -1 >> $outfile
else
# Must replace with $VAL1
echo "Must replace on line "$NBC
k1=$(head -$NBC $infile | tail -1 | sed 's/ /#/g')
(( ZPOS1 = POS1 - 1 ))
k2=$(echo $k1 | cut -b1-$ZPOS1)
(( ZPOS1 = XPOS1 + 1 ))
k3=$(echo $k1 | cut -b$ZPOS1-)
echo "${k2}${VAL1}${k3}" | sed 's/#/ /g' >> $outfile
fi
else
head -$NBC $infile | tail -1 >> $outfile
fi
done
|
![]() |
| Закладки |
| Резьба Инструменты | Искать в этом Thread |
| Режимы дисплея | Оценить эту ветку |
|
|