単語を一致させ、複数のスペースを無視する方法は?

単語を一致させ、複数のスペースを無視する方法は?

次の構文は「Ambari Server running」と一致する必要がありますが、単語間に複数のスペースがある場合はどのように一致しますか?単語間のスペースを無視する方法は?

echo "Ambari Server      running"  | grep -i "Ambari Server running"
echo "Ambari     Server running"   | grep -i "Ambari Server running"
echo "     Ambari Server running"  | grep -i "Ambari Server running"

予想される結果は次のとおりです。

Ambari Server running
Ambari Server running
Ambari Server running

ベストアンサー1

tr-s連続したスペースを単一のスペースに圧縮するオプションと組み合わせて使用​​すると、grep結果は次のようになります。

$ echo 'Some   spacious  string' | tr -s ' ' | grep 'Some spacious string'
Some spacious string

ただし、これにより横方向のスペースは完全に除去されず、両端の単一のスペースにのみ圧縮されます。

sedサイドスペースを取り除き、内部スペースを単一のスペースに圧縮するために使用されます。

echo ' Some   spacious  string' |
sed 's/^[[:blank:]]*//; s/[[:blank:]]*$//; s/[[:blank:]]\{1,\}/ /g'

その後に渡すことができますgrep

おすすめ記事