2012-04-02 13 views
56

Ben yanlış yapıyorumStandart girdiden okumak için nasıl sersemleşirim?

grep searchterm myfile.csv | sed 's/replaceme/withthis/g' 

çalışıyor ve

unknown option to `s' 

alıyorum?

Düzenleme: kodunun aslında doğru olması Yorumlar başı olarak

. Benim tam kod aşağıdaki

grep searchterm myfile.csv | sed 's/replaceme/withthis/g' 
# my comment 

gibi bir şey benziyordu Ve sed içine nedense benim yorum girdisi olarak beslenen anlaşılmaktadır. Çok ilginç.

+0

Eğer replacename yerine 'withthis' ile dosyayı değiştirmek istiyor musunuz? – Teja

+1

Hayır, denediğiniz şey bu değil. Başka bir şey eksik. –

+6

En iyi tahminim, gerçek durumunuzda bir '/' 'replaceme' ya da' withthis' seçeneğiniz olmasıdır. Deneyin: # # replaceme # withthis # g '. – cababunga

cevap

77

  • Tip :%s/replaceme/withthis/
  • Tip :wq Escape --expression seçenek

    grep searchterm myfile.csv | sed --expression='s/replaceme/withthis/g' 
    
  • +0

    Ancak yeni değeri dosyaya kaydetmiyorsunuz değil mi? – Teja

    +0

    + SOaddict, Bu sadece stdout'a çıktı, myfile.csv değiştirmiyor. – flickerfly

    -8
    1. Açık vi myfile.csv
    2. basın kullanarak dosya kullanabilir ve Enter tuşuna basın

    Dosyanızda şimdi yeni desen olacak.

    +3

    OP, vim ile değil sed ile nasıl yapılacağını bilmek istedi. –

    +0

    Ne Noe dedi. Ayrıca, vim çözümünüz seddül (ler) in altında olduğundan daha kolay betimlenemez. – weberc2

    +2

    -1'in altında bir yanıt reddetmeye gerek yok, millet. – Titou

    9

    kullanım "-e" yerine bir dosyadan, sen -e kullanmalıdır, stdin'den sed yakalamak yapmak için sed-ifadesini

    cat input.txt | sed -e 's/foo/bar/g' 
    
    +0

    "-e" ifadesini kullanarak sed ifadesini kullanmanın stdin'den okunmasını nasıl sağlayabileceğimi merak ediyordum? Varsayılan olarak sed stdin'den okuyor mu? – Tim

    +0

    evet. Çoğu un * x aracı gibi, “sed” giriş dosyası yoksa stdin'den okur. –

    +0

    Teşekkürler. -e gerekli mi? O olmadan çalışıyor. Merak etmenin amacı nedir acaba? Teşekkürler. – Tim

    3

    belirtmek için. Bunun gibi

    :

    curl -k -u admin:admin https://$HOSTNAME:9070/api/tm/3.8/status/$HOSTNAME/statistics/traffic_ips/trafc_ip/ | sed -e 's/["{}]//g' |sed -e 's/[]]//g' |sed -e 's/[\[]//g' |awk 'BEGIN{FS=":"} {print $4}' 
    
    İlgili konular