2016-06-21 12 views
1

私の英語をお願いします。Awk分割内でSedコマンドを実行する(forループ)

私は、スクリプトをシェルに新たなんだと私はそれを実行すると、awkの

# !/bin/sh 
SCRIPT_DIR=`pwd` 
TEXT_FIELD=$SCRIPT_DIR/Field/textField 

FIELDS="code-text name-text" 
echo "$FIELD" | awk '{len = split($0,t," ") 
for (i=1; i<=len; i++) { 
    "sed -i 's/inputPlaceholder/t[i]/g' $TEXT_FIELD" 
} }' 

を使用して、分割した後、forループ内の各要素の文字列をコマンドを置き換えるのsedを実行しようとしている:$ sh code_sample.sh それですエラーをスローせず、どちらも動作しません。

私を助けてくれますか?私は最も感謝しています。


EDIT

私の目標はarray[1] = "code-text"array[2] = "name-text"code-text name-textを読むことです。

次に、forループが1つずつ読み込まれ、各項目が指定されたファイルのinputPlaceholder文字列に置き換えられます。

例:

入力:(ファイルで)= "コード・テキスト名テキスト"

出力ファイルされる:テキストベース>となり( "inputPlaceholder")を作成し、テキストベース>作成(「コード-text ")、code.txtとして保存し、同じロジックでname-textをname.txtに保存します。

+0

どのように動作しますか?入力の例、期待される出力と実際の出力を示します。あなたの英語は途中で問題ないので、あなたは赦免されます。 –

+0

いいえ。シェルは、ツールを呼び出す環境です。 Awkはテキストを処理するためのツールです。どちらがsedと呼ぶのが適切かを推測します(ヒント:awkではありません)。簡潔でテスト可能なサンプル入力と期待される出力を含めるようにあなたの質問を編集してください。あなたが正しい方法でしようとしていることは何でもお手伝いすることができます。 –

+0

私は自分の質問を更新しました。見てください。 –

答えて

0

あなたはsystem("sed ....")と呼ぶことができますが、ひどい考えのように聞こえるかもしれません。たとえば、置換テキストがsed式で使用するのが安全であることを確認する必要があります。そうしないと、入力によってはコマンドが失敗することがあります。

また、sed -i '...を書くと、awkテキストの引用符を打ち破っているので、引用符文字をエスケープする必要があります。

このようなテキスト処理を実際に行っている場合は、shよりも高度なものをお勧めします。 Python、Perl、Rubyなど多くの人がこれをうまくやってくれます。

いくつかの具体的な例が必要な場合は、スクリプトが何を期待しているかを述べる必要があります。現在の例はひどく壊れており、予想される入力/出力/動作がわかりません。

+0

私は自分の質問を更新しました。見てください。ありがとうございました。 –

+0

私のシステムの主な制御の大部分は、start.sh、stop.shなどのshファイルを使用しているためです。だから私は便宜のためにshを使うことを考えていた。 –

+0

@RobustTranシェルを使用してawkを呼び出し、awkを使用してテキスト処理を行うのは問題ありません。それは両方のツールがうまくやるために設計されたものです。 –

関連する問題