The UNIX and Linux Forums  

Go Back   В UNIX и Linux Форумы > Топ форумы > Shell программирование и сценарии
.
Google unix.com



Shell программирование и сценарии Почтовые вопросы о KSH, CSH, SH, BASH, Perl, PHP, SED, AWK и скрипты оболочки и оболочки скриптовых языков здесь.

Подробнее UNIX и Linux Темы форума можно найти полезные
Нить Резьба для начинающих Форум Ответы Последнее сообщение
Изменение прав доступа с использованием FTP panknil Shell программирование и сценарии 3 11-07-2007 08:08 PM
Изменение UserID и изменение группы и GID deal732 Shell программирование и сценарии 2 04-18-2007 11:09 AM
Изменение порядка использования СЭД venu_nbk UNIX для чайников Вопросы И Ответы 9 07-29-2006 06:03 PM
Смена пользователей Bab00shka Shell программирование и сценарии 2 08-01-2003 05:44 AM
Смена IP в Hordak UNIX для чайников Вопросы И Ответы 2 08-03-2002 01:42 AM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered By Powered by Google
 
LinkBack Резьба Инструменты Искать в этом Thread Оценить Thread Режимы дисплея
Old 10-04-2008
jolecanard jolecanard is offline
Зарегистрированный пользователь
  
 

Регистрация: Sep 2008
Сообщений: 36
Unhappy AWK меняется мое ФУ!!

Привет,

Здесь (часть) в файл Я хочу изменить. Примечание трех пространств до "3" (можно было бы "2" или "0", также).


Код:
   3 621530  1.1935E-02 631530  1.1293E+01 641530  1.1117E-02 571540  4.4419E-14
   3 581540  2.6670E-10 591540  3.8610E-09 601540  1.1016E-06 611540  3.2618E-06
   3 611541  6.5572E-07 621540  9.8307E+00 631540  3.1177E+00 641540  1.4615E+00
   3 571550  0.0000E+00 581550  8.8139E-12 591550  1.0739E-09 601550  2.5639E-07
   3 611550  1.1011E-06 621550  3.6787E-05 631550  3.4821E+00 641550  3.1855E+00
   3 641551  0.0000E+00 581560  9.4585E-13 591560  7.5358E-11 601560  1.2023E-07
   3 611560  1.7968E-07 621560  5.4237E-04 631560  3.0054E-02 641560  6.5687E+00
   3 581570  2.3926E-14 591570  9.9322E-12 601570  4.3929E-09 611570  4.6793E-07
   3 621570  5.5911E-06 631570  6.3564E-04 641570  3.2355E+00 591580  2.8608E-13

Я хочу найти ID (например 621530) и измените следующие значения ней.

Я использую этот скрипт:

Код:
VALUE=".........."
awk -v var="$VALUE" 'BEGIN{}
NR==FNR{a[$0]=$0; next}
{for(i=2;i<9;i+=2)if($i in a){$(i+1)=var}}
#{$1="   "$1}
{print}' ID_to_be_changed my_file

Проблема заключается в том, что он снимает три пространства в передней части строки, если он изменяется то в строке ... удаления прокомментировал линия решает эту проблему.
Однако я не знаю, как сохранить то же количество пробелов между строк: 2 пространствах между идентификатор и следующие значения, и 1 пространство между стоимостью и после этого ID (сценарий становится все выше, в одном пространстве).

Может ли кто-нибудь мне помочь?
Old 10-04-2008
vidyadhar85's Avatar
vidyadhar85 vidyadhar85 is offline Forum Staff  
Ведущий (преподаватель)
  
 

Регистрация: Jun 2008
Место проведения: Индия
Сообщения: 1418
набор ФУСШ \u003d "" любое из пространств не нужно
Old 10-04-2008
jolecanard jolecanard is offline
Зарегистрированный пользователь
  
 

Регистрация: Sep 2008
Сообщений: 36
У меня уже пытались, что ...
Проблема тогда состоит в том, что все мои колонки с интервалом лишь один пробел!

Я хочу сохранить структуру:

Код:
 
"   "3" "xxxxxx"  "x.xxxxExx" "xxxxxx"  "x.xxxxExx"...

Old 10-04-2008
jolecanard jolecanard is offline
Зарегистрированный пользователь
  
 

Регистрация: Sep 2008
Сообщений: 36
Thumbs up

В настоящее время единственным решением я это:


Код:
 
VALUE=".........."
awk -v var="$VALUE" 'BEGIN{FS=OFS=" "}
NR==FNR{a[$0]=$0; next}
{for(i=4;i<9;i+=2)if($i in a){$(i+1)=var}}
{for(i=4;i<9;i+=2)if($i in a){print "  ",$1,$2," "$3,$4," "$5,$6," "$7,$8," "$9;next}}
{print}' ID_to_be_changed my_file

На самом деле за несколько строк, некоторые ценности не имеют формат "x.xxxxExxx", но менее символов (например, "0.0"). Затем, недостающие символы "пространств", с тем чтобы сохранить alignement:


Код:
   2 982520  1.6134E-14 982530  1.7241E-17 982540  3.4164E-20 982550  1.2285E-24
   2 992530  1.8708E-17 992541  6.2076E-22 992540  7.5646E-20 992550  7.0917E-22
   2 162500  7.6697E-08      0  0.0000E+00      0  0.0000E+00      0  0.0000E+00
   3  10030  2.0892E-01  30060  6.0786E-04  30070  1.3046E-05  40090  1.9438E-05
   3  40100  1.1748E-04  60140  1.6964E-05 280660  0.0000E+00 290660  1.4066E-14
   3 300660  5.0403E-09 290670  7.6644E-19 300670  2.4718E-10 300680  1.1002E-12

Мое решение работает до тех пор, пока я не меняем ценностей, расположенных на строки с "сокращением" персонажей ... (до тех пор, пока ничего не изменилось в строку, не AWK вновь сцеплять строку, тем самым сохраняя право интервал).

Кроме того, используя все доводы в печать не удобно ...

Как я мог бы решить эти две проблемы?
Old 10-04-2008
Franklin52 Franklin52 is offline Forum Staff  
Модератор
  
 

Регистрация: Февраль 2007
Сообщения: 4342
Вы можете использовать printf печатать строку с фиксированным форматом, что-то вроде:


Код:
VALUE=".........."
awk -v var="$VALUE" 'BEGIN{FS=OFS=" ";fmt="%5s%7s%12s%7s%12s%7s%12s%7s%12s\n"}
NR==FNR{a[$0]=$0; next}
{for(i=4;i<9;i+=2)if($i in a){$(i+1)=var}}
{for(i=4;i<9;i+=2)if($i in a){printf(fmt,$1,$2,$3,$4,$5,$6,$7,$8,$9);next}}
{print}' ID_to_be_changed my_file

Привет
Closed Thread

Закладки

Резьба Инструменты Искать в этом Thread
Искать в этом Thread:

Расширенный поиск
Режимы дисплея Оценить эту ветку
Оценить эту ветку:

Отправка Правила
Вы не может Начать новую нитей
Вы не может Почтовые ответы
Вы не может Почтовые вложения
Вы не может Редактировать Ваши сообщения

BB код быть На
Смайлики являемся На
[IMG] код На
HTML-код Вне
Trackbacks являемся На
Pingbacks являемся На
Refbacks являемся На




Часовой пояс GMT -4. Текущее время 04:33 AM.


Powered By: Справка, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Язык Переводы на питание от .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
В UNIX и Linux форумы Содержание Copyright © 1993-2009. Все права Reserved.Ad управления по RedTyger

Содержание соответствующие URL-адреса в vBSEO 3.2.0