The UNIX and Linux Forums  
Helloやアメリカ合衆国へようこそ! UNIXおよびLinuxフォーラム!訪問し、当社のグローバルコミュニティに参加いただきありがとうございます。

Go Back   UNIXおよびLinuxフォーラム > トップフォーラム > シェルプログラミングとスクリプティング
Googleのunix.com



シェルプログラミングとスクリプティング KSH 、 CSH 、 shに、 bashの、はPerl 、 PHPは、削除するsed 、 Awkの、他のシェルスクリプトやシェルスクリプト言語についての質問の投稿はこちら。

その他のUNIXおよびLinuxフォーラムトピックは参考にすること
スレッド スレッドスターター フォーラム 返信 最後の投稿
シェルスクリプトからデータベースのテーブルに、ユーザーが検索クエリに 頂点 シェルプログラミングとスクリプティング 0 2009年4月10日 06:18午後
更新クエリをするかどうかが成功するとKshスクリプトを使用していないかを確認するには ali560045 シェルプログラミングとスクリプティング 3 2009年1月7日 01:41午前
を見つけ、ファイルのmtimeクエリ Rajat UNIXのダミー質問と回答のため 1 2008年7月9日 08:12午前
検索クエリについての- exec shriashishpatil UNIXの詳細&エキスパートのためのユーザー 2 2007年4月12日 02:16午前
見つける-パーマクエリ napolayan UNIXのダミー質問と回答のため 1 2006年11月28日 02:28午後

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek を搭載 Powered by Google
 
LinkBack スレッドツール このスレッドを検索 スレッドを評価 表示モード
  #1固定リンク)  
Old 2009年5月26日
lightdensity lightdensity is offline
登録ユーザー
  
 

参加日: 2009年5月
投稿数: 6
見つけて、クエリを置き換える

皆さんこんにちは、

私は複数の単語にマッチし、新しい言葉に置き換える検出するスクリプトを書いています。
私のように見えるファイルがserver.conf
コード:
### Welcome to server ###
### Server address and port ###
 
Server=127.0.0.1 
### Replace Server=0.0.0.0 ###
 
ServerPort=0
### Replace ServerPort=1 ####
### Enable Server ##
 
Enable Server=1
 
### Replace Enable Server=0 ###
### END OF FILE ##
-------------------------------------------------- ---------
私のコードには以下のように書かれている
コード:
FILE="/opt/server.conf"
NEW_FILE="/opt/new_server.conf"
        
 IFS=""
        for line in `cat ${FILE}`; do
        #echo ${line}
        if [ -n "`echo ${line} | grep 'Server=127.0.0.1'`" ]
        then
                 echo ${line} | sed 's|Server=127.0.0.1|Server=0.0.0.0|g' >>$NEW_FILE
        elif [ -n "`echo ${line} | grep 'ServerPort=0'`" ]
        then
                echo ${line} | sed 's|ServerPort=0|ServerPort=1|g' >>$NEW_FILE
        elif [ -n "`echo ${line} | grep 'Enable Server=1'`" ]
        then
                echo ${line} | sed 's|Enable Server=1|Enable Server=0|g' >>$NEW_FILE
        else
                echo ${line} >>$NEW_FILE
        fi
        done
しかし、私はそれは、最初の試合(サーバー\u003d 0.0.0.0 )に代わる私のスクリプトを実行します。 doesn't残り2つの変更にマッチします。
私は自分のコードで間違ったのか分からない。

誰もこれを助けてくれますか?
事前に感謝

編集lightdensityで最終; 2009年5月26日に 01:14午後..
  #2固定リンク)  
Old 2009年5月26日
devtakh devtakh is offline
登録ユーザー
  
 

参加日: 2007年10月
場所:バンガロール
投稿数: 514
コード:
sed '/Server=127.0.0.1/{s//Server=0.0.0.0/g}
/ServerPort=0/{s//ServerPort=1/g}
/Enable Server=1/{s//Enable Server=0/g}
' /opt/server.conf > /opt/new_server.conf
- Devaraj Takhellambam
  #3固定リンク)  
Old 2009年5月26日
lightdensity lightdensity is offline
登録ユーザー
  
 

参加日: 2009年5月
投稿数: 6
引用:
当初の投稿 devtakh View Post
コード:
sed '/Server=127.0.0.1/{s//Server=0.0.0.0/g}
/ServerPort=0/{s//ServerPort=1/g}
/Enable Server=1/{s//Enable Server=0/g}
' /opt/server.conf > /opt/new_server.conf
- Devaraj Takhellambam
ご回答いただきありがとうございます..実は私はシェルスクリプトに新しい午前
コード:
FILE="/opt/server.conf"
NEW_FILE="/opt/new_server.conf"
        
 IFS=""
        for line in `cat ${FILE}`; do
        #echo ${line}
        if [ -n "`echo ${line} | grep 'Server=127.0.0.1'`" ]  #grep command searches for right string
        then
                 echo ${line} | sed 's|Server=127.0.0.1|Server=0.0.0.0|g' >>$NEW_FILE
        elif [ -n "`echo ${line} | grep 'ServerPort=0'`" ]
        then
                echo ${line} | sed 's|ServerPort=0|ServerPort=1|g' >>$NEW_FILE
        elif [ -n "`echo ${line} | grep 'Enable Server=1'`" ]
        then
                echo ${line} | sed 's|Enable Server=1|Enable Server=0|g' >>$NEW_FILE
        else
                echo ${line} >>$NEW_FILE
        fi
        done
そのためには、方法を見つけるには、右側の文字列のか?

ありがとう
  #4固定リンク)  
Old 2009年5月26日
BubbaJoe's Avatar
BubbaJoe BubbaJoe is offline
登録ユーザー
  
 

参加日: 2008年10月
場所:セントルイス
投稿数: 153
あなたのIFSは間違って設定されている。は、 IFS社\u003d " "の区切りがないので、ファイル全体が読み込まれている。 IFSの場合にのみ使用することができますが、実際に各フィールドの間のセパレータです。猫$ファイルだから、それを一度にフィールドには、行毎にファイルを与えることはできません。そのため1回だけ一致する。以来、あなたは本当にあなたのAwkを使用すべきかを記録として、それぞれの行を見て セッド 見つけることにして、テキストを置き換えます。

働くことになるので、この場合は、検索devtakhによって、ファイル全体を変更するには、各インスタンスの指定したパターンと一致するパターンを置き換えるという投稿されました。それは、それぞれの1つを検索し、使用する方法ファイルを変更してください。

セッド ' /サーバ\u003d 127.0.0.1 / ( / /サーバー\u003d 0.0.0.0 / gに)
/ ServerPort \u003d 0 / ( / / ServerPort \u003d 1 / gに)
/有効にするサーバー\u003d 1 / ( / /有効にするサーバー\u003d 0 / gに)
'は/ opt / server.conf >は/ opt / new_server.conf
  #5固定リンク)  
Old 2009年5月26日
lightdensity lightdensity is offline
登録ユーザー
  
 

参加日: 2009年5月
投稿数: 6
引用:
当初の投稿 BubbaJoe View Post
あなたのIFSは間違って設定されている。は、 IFS社\u003d " "の区切りがないので、ファイル全体が読み込まれている。 IFSの場合にのみ使用することができますが、実際に各フィールドの間のセパレータです。猫$ファイルだから、それを一度にフィールドには、行毎にファイルを与えることはできません。そのため1回だけ一致する。以来、あなたは本当にあなたのAwkを使用すべきかを記録として、それぞれの行を見て セッド 見つけることにして、テキストを置き換えます。
支援に感謝..

どうすればよいので、設定
IFS社\u003d " \ Ñ \ T "を

私は推測するよりも、猫$するファイル、行毎に..

[ OK ]を! !私はそれを試す予定だ..一方あなた..私の残りのコードをチェックできるかどうかは自分のコードが正しいことを教えて下さい。

ありがとう
  #6固定リンク)  
Old 2009年5月26日
devtakh devtakh is offline
登録ユーザー
  
 

参加日: 2007年10月
場所:バンガロール
投稿数: 514
引用:
当初の投稿 lightdensity View Post
ご回答いただきありがとうございます..実は私はシェルスクリプトに新しい午前
コード:
FILE="/opt/server.conf"
NEW_FILE="/opt/new_server.conf"
        
 IFS=""
        for line in `cat ${FILE}`; do
        #echo ${line}
        if [ -n "`echo ${line} | grep 'Server=127.0.0.1'`" ]  #grep command searches for right string
        then
                 echo ${line} | sed 's|Server=127.0.0.1|Server=0.0.0.0|g' >>$NEW_FILE
        elif [ -n "`echo ${line} | grep 'ServerPort=0'`" ]
        then
                echo ${line} | sed 's|ServerPort=0|ServerPort=1|g' >>$NEW_FILE
        elif [ -n "`echo ${line} | grep 'Enable Server=1'`" ]
        then
                echo ${line} | sed 's|Enable Server=1|Enable Server=0|g' >>$NEW_FILE
        else
                echo ${line} >>$NEW_FILE
        fi
        done
そのためには、方法を見つけるには、右側の文字列のか?

ありがとう
このリソースのシェルスクリプトを使用するには、廃棄されます セッド それを扱うことができます。もしその言葉が存在を確認して存在する場合、それを置き換える必要はありません。 セッド を行うことができます。
しかし、私はあなたを使用することをお勧めする必要がありますincase .. whileループは、代わりには、 catコマンドでループ。

コード:
FILE="/opt/server.conf"
NEW_FILE="/opt/new_server.conf"
        
       while read line
   do
        #echo ${line}
        if [ -n "`echo ${line} | grep 'Server=127.0.0.1'`" ]  #grep command searches for right string
        then
                 echo ${line} | sed 's|Server=127.0.0.1|Server=0.0.0.0|g' >>$NEW_FILE
        elif [ -n "`echo ${line} | grep 'ServerPort=0'`" ]
        then
                echo ${line} | sed 's|ServerPort=0|ServerPort=1|g' >>$NEW_FILE
        elif [ -n "`echo ${line} | grep 'Enable Server=1'`" ]
        then
                echo ${line} | sed 's|Enable Server=1|Enable Server=0|g' >>$NEW_FILE
        else
                echo ${line} >>$NEW_FILE
        fi
        done < $FILE
- Devaraj Takhellambam
  #7固定リンク)  
Old 2009年5月27日
lightdensity lightdensity is offline
登録ユーザー
  
 

参加日: 2009年5月
投稿数: 6
引用:
当初の投稿 devtakh View Post
コード:
sed '/Server=127.0.0.1/{s//Server=0.0.0.0/g}
/ServerPort=0/{s//ServerPort=1/g}
/Enable Server=1/{s//Enable Server=0/g}
' /opt/server.conf > /opt/new_server.conf
- Devaraj Takhellambam
こんにちはDevaraj Takhellambam 、

あなたのソリューションを正常に動作...しかし私は今新たな問題に直面しアム...実際に私は私の完全な入力ファイルに記載されていない
コード:
### Welcome to server ###
### Server address and port ###
 
Server=127.0.0.1 
### Replace Server=0.0.0.0 ###
 
ServerPort=0
### Replace ServerPort=1 ####
### Enable Server ##
 
Enable Server=1
 
### Replace Enable Server=0 ###
 
Enable Agent=1
Enable ip=1
 
### Now I dont need to change above two options ###
### END OF FILE ##
だから、何を導入しているように見える
コード:
FILE="/opt/server.conf"
NEW_FILE="/opt/new_server.conf"
    exec 0<$FILE
    while read line
do
     #echo ${line}
     if [ -n "`echo ${line} | grep 'Server=127.0.0.1'`" ]  #grep command searches for right string
     then
              echo ${line} | sed 's|Server=127.0.0.1|Server=0.0.0.0|g' >>$NEW_FILE
     elif [ -n "`echo ${line} | grep 'ServerPort=0'`" ]
     then
             echo ${line} | sed 's|ServerPort=0|ServerPort=1|g' >>$NEW_FILE
     elif [ -n "`echo ${line} | grep 'Enable Server=1'`" ]
     then
             echo ${line} | sed 's|Enable Server=1|Enable Server=0|g' >>$NEW_FILE
     else
             echo ${line} >>$NEW_FILE
     fi
     done < $FILE
出力ファイルのようになります。
コード:
Server=0.0.0.0
ServerPort=1
Enable Server=0
ですから、私は自分のコードを、出力したファイルを実行しているだけ私は変更の文字列が含まれ、そこにコピーするように特定の文字列です。

申し訳ありませんが私はあなたを悩またくさんいる...

ありがとう
Closed Thread

ブックマーク

スレッドツール このスレッドを検索
このスレッドを検索

高度な検索
表示モード このスレッド
このスレッド

投稿ルール
あなた ことができない。 新しいスレッドを投稿
あなた ことができない。 返信の投稿
あなた ことができない。 添付ファイルの投稿
あなた ことができない。 自分の投稿を編集

BBコード なる 〜の上に
スマイリー なる 〜の上に
[イメージ] コードは 〜の上に
HTMLコードは、 オフ
トラックバック なる 〜の上に
ピングバック なる 〜の上に
Refbacks なる 〜の上に




すべてGMT -4です。現在の時刻は 11:53午前


提供: vBulletin、著作権© 2000 - 2006、Jelsoft企業株式会社。言語翻訳による電源
vBCredits v1.4著作権© 2007 - 2008 、 PixelFXスタジオ
は、 UNIXおよびLinuxフォーラムのコンテンツ著作権© 1993 〜 2009 。すべての権利を管理しReserved.Ad RedTyger

コンテンツ関連のURLで vBSEO 3.2.0