1

二重引用符を含む可能性のある STRING1 という文字列があります。

句読点を引き出すために sed を介して文字列をエコーし​​、特定の単語をカウントするために配列に送信しています。問題は、変数を二重引用符で sed にエコーできないことです。

ファイルシステムをクロールして、FTP コマンドを使用するファイルを探しています。「FTP」の各ファイルをgrepします

STRING1=`grep -i ftp $filename`

$STRING1 を echo すると、これが出力されます (ほんの一例)

myserver> echo "Your file `basename $1` is too large to e-mail. You must ftp the file to BMC tech support. \c"
    echo "Then, ftp it to ftp.bmc.com with the user name 'anonymous.' \c"
    echo "When the ftp is successful, notify technical support by phone (800-537-1813) or by e-mail (support@bmc.com.)"

それから私はこのコードを持っています

STRING2=`echo $STRING1|sed 's/[^a-zA-Z0-9]/ /g'`

$STRING1 のように二重引用符を付けてみました

STRING2=`echo "$STRING1"|sed 's/[^a-zA-Z0-9]/ /g'`

しかし、それはうまくいきません。単一の Qoutes は、$STRING1 を文字列として sed に送信するだけなので、うまくいきませんでした。

ここで他に何ができますか?

4

2 に答える 2

1

問題は、最初にどのように設定するかということですSTRING1。私があなたがやろうとしていることを正しく理解しているなら、あなたは書く必要があります:

STRING1="Your file `basename $1` is too large to e-mail. You must ftp the file to BMC tech support. \c
Then, ftp it to ftp.bmc.com with the user name 'anonymous.' \c
When the ftp is successful, notify technical support by phone (800-537-1813) or by e-mail (support@bmc.com.)"

次に、次のように書くことができます。

STRING2=`echo "$STRING1"|sed 's/[^a-zA-Z0-9]/ /g'`
于 2012-10-01T20:13:52.180 に答える
0

私のために働く:

/home/user1> S1='"double         quotes"'
/home/user1> echo "$S1"
"double         quotes"

/home/user1> S2=`echo "$S1"|sed 's/[^a-zA-Z0-9]/ /g'` 
/home/user1> echo "$S2"
 double         quotes 
于 2012-10-08T11:08:24.993 に答える