2012-04-02 16 views
56

私は私が間違っているのは何標準入力からsedを読み込むにはどうすればよいですか?

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

をしようと

unknown option to `s' 

を取得していますか?

編集:

コメントごとに、コードは実際には正しいです。私の完全なコードは、以下の

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

のようなものに似ていると何らかの理由で、私のコメントは、sedのに入力として供給されていたことが表示されます。非常に奇妙な。

+0

あなたがreplacenameの代わりに「withthis」を使用してファイルを置き換えますか? – Teja

+1

いいえ、あなたがしようとしていることではありません。欠けているものがあります。 –

+6

私の推測では、あなたの実際のケースでは、 'replaceme'または' withthis'に '/'があります。試してください: '#replaceme#これで#g''。 – cababunga

答えて

77

  • タイプ:%s/replaceme/withthis/
  • タイプ:wqエスケープ--expressionオプション

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

    しかし、新しい値をファイルに保存していませんか? – Teja

    +0

    + SOaddict、これはstdoutに出力しているだけで、myfile.csvは変更されていません。 – flickerfly

    -8
    1. オープンvi myfile.csv
    2. プレスを使用してファイルを使用しては、Enterキーを押します

    ファイルに新しいパターンがあります。

    +3

    OPはvimではなく、sedでそれを行う方法を知りたがっていました。 –

    +0

    Noeが言ったこと。また、あなたのvimの解決策は、(簡単に)スクリプト化できないため、sedの代替案より劣っています。 – weberc2

    +2

    -1の下で答えをdownvoteする必要はありません。 – Titou

    9

    使用「-e」が代わりのファイルから、あなたは-eを使用する必要があり、標準入力からsedキャッチを作るためにsedの表現

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

    "-e"を使ってsed-expressionを指定すると、sedをstdinから読み込むことができますか?デフォルトでsedはstdinから読み込みますか? – Tim

    +0

    はい。ほとんどのun * xツールのように、入力ファイルがない場合、 'sed'はstdinから読み込みます。 –

    +0

    ありがとうございます。 '-e'は必要ですか? '-e'なしで動作します。私は '-e'を使う目的が何であるのだろうか?ありがとう。 – Tim

    3

    を指定します。このよう

    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}' 
    
    関連する問題