The UNIX and Linux Forums  
Hej och välkommen från USA till UNIX och Linux Forum! Tack för ditt besök och gå med i vår globala gemenskapen.

Go Back   UNIX och Linux Forum > Upp Forum > Shell-programmering och Skript
.
google unix.com



Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här.

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
föränderliga tillstånd med FTP panknil Shell-programmering och Skript 3 11-07-2007 08:08
Ändra användarnamn och ändra och GID deal732 Shell-programmering och Skript 2 04-18-2007 11:09
Ändra ordning använder sed venu_nbk UNIX for Dummies Frågor & Svar 9 07-29-2006 06:03
Ändra användare Bab00shka Shell-programmering och Skript 2 08-01-2003 05:44
Ändra IP: s Hordak UNIX for Dummies Frågor & Svar 2 08-03-2002 01:42

 
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Sök i denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 10-04-2008
jolecanard jolecanard is offline
Registered User
  
 

Join Date: Sep 2008
Inlägg: 36
Unhappy awk ändrar min FS!

Hallå där,

Här är (en del) av filen jag vill ändra. Notera tre platser före "3" (kan vara "2" eller "0" också).

Kod:
   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
Jag vill hitta något ID (t.ex. 621530) och ändra värdet efter den.

Jag använder detta script:
Kod:
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
Problemet är att det tar bort de tre utrymmen framför raden om den ändras något i raden ... undanröja kommenterade linje löser problemet.
Men jag vet inte hur man ska behålla samma antal blanksteg mellan rader: 2 blanksteg mellan ID och följande värde och 1 utrymmet mellan ett värde och ID efter detta (scriptet ovan förvandlar allt till en enda plats).

Kan någon hjälpa mig?
 

Komihåglista

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 01:40.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0