2017-04-21 65 views
0

awkでは、ハイフンとゼロから多文字で構成される文字列を検索しようとしています。私は比較を行うためにチルダ演算子を使用して、パターンawk - チルダ演算子とハイフン。次のテストは期待どおりに評価されていません

/[-][a-zA-Z]*/ 

テストに基づいて適切なフィールドを返すように期待しています:

echo "test -abc" | awk '{for (i=0; i<=NF; i++){if ($i ~ /[-][a-zA-Z]*/){print $(i+1);exit}}}' 

それは一貫して「テスト」を返しています。

ご協力いただければ幸いです。

+0

を与えるsedソリューション

echo "apple -korn -bash orange strawbery -tsh " | sed -E 's/[[:blank:]]{1,}[^-]*[[:blank:]]{1,}/ /g;s/^[^-]*-/-/' 

については、 '$ 0 '全体入力行はありませんか? – melpomene

+2

インデックスを '0'から' 1'に変更し、 ' karakfa

+0

これは正しい方向だった@karakfaに感謝します。 'i = 1; i≦NF; i ++ 'と' print {$(i) 'はそれを修正しました。完璧な意味合いがあります。顔の手のひら。 – kgjac

答えて

0

どのように

-korn -bash -tsh 
+1

@sysam、もっとクリーナー。私が行くようにbashと働くことに新しい。ありがとうございました – kgjac

+0

ようこそ。 :)あなたはbashでうまくいっていることを願っています.. – sjsam

1

grep代替

echo "apple -korn -bash orange strawbery -tsh" | grep -o '[-][a-zA-Z]*' | xargs 

-korn -bash -tsh 
関連する問題