2011-10-28 3 views
2

は便宜上、私はすべて削除されたファイルには、私の作業コピーにsvn rmにエイリアスを作成しました:awkのprint文の引数の前後に一重引用符を追加するにはどうすればよいですか?

alias svnrmall="svn status | grep '^\!' | awk '{print \$2}' | xargs svn rm" 

これは、ファイル名に空白文字が含まれている場合を除き、非常によく動作します。

問題の簡単な解決策は、各ファイルパスを一重引用符で囲むことですが、私はそれを行う方法を理解するのが難しいです。

例えば、次のようなもの(これを除いては、エラーになります:「無効な式のchar 『』」」):

alias svnrmall="... | awk \"{print '\$2'}\" | ..." 
+1

PS。 'awk '/ pattern/{print $ 2}''あなたはフィールドでもそれを行うことができます 'awk '$ 2〜/ pattern/{print $ 2}' ' – matchew

+1

@matchewああ、知っておいてよかった。ありがとう! –

答えて

14

利用-vは、変数qを定義し、awkの

でその変数を使用するに
alias svnrmall="... | awk -v q="'" '{print q $2 q}' | ..." 
+0

これは私が記述した問題を正しく解決するため、これを受け入れられた答えとしています。しかし、私は[XY問題](http://mywiki.wooledge.org/XyProblem)の被害者になったことを認識しています。実際にはawkのようなことをする必要があります。{print q $ 2 $ 3など。)q} '。 –

+0

@Phoenixありがとう、幸運! – Ritesh

+0

将来の読者のための注意: '$ 0 'を使って、フィールドに区切られるスペースを気にせずに行全体を選択することができます。 – simonwo

関連する問題