誰かが私に次のパイプラインを説明できますか?
一意のポート名のみが表示されるように、サービスのポートのリストをフィルタリングしたいと思います。 doexpand
とdoは正確に何でありtr
、withを使用する正規表現の用途は何ですかegrep
?
expand regexAufgabe | egrep -v '^#|^$' | tr -s ' ' | cut -d ' ' -f2 | cut -d / -f2 | sort | uniq
答え1
このexpand
ユーティリティは、ファイルのタブ文字を空白に変換します(たとえば、「タブを空白に拡張する」など)。パイプラインは最初に名前付きファイルの内容に対してこれを行いますregexAufgabe
。望むよりman expand
。
その後、ユーティリティegrep
は-v
オプションと正規表現と共に使用されます^#|^$
。この-v
オプションはテストのポイントを無効にします。つまり、egrep
これを実行するすべてのラインが出力されます。いいえ与えられた正規表現と一致します。正規表現は、#
文字で始まるまたは空の行と一致します。これは、パイプラインの2番目のステップで始まる空白行を削除することを意味します#
。
このtr
ユーティリティは通常、ある文字セットを別の文字セットに変換するために使用されますが、パイプはそれを使用して複数の連続したスペースを単一のスペースに「圧縮」します。望むよりman tr
。
cut
/
次に、結果データセットからスペースで区切られた2番目のフィールドを抽出し、それからスペースで区切られた2番目のフィールドを抽出するために使用されます。
パイプラインの最後の2つのステップはsort | uniq
単一のコマンドで作成できますsort -u
。これにより、データが並べ替えられ、重複項目が削除されます。
つまり、タブを(単一の)スペースに置き換え(複数のスペースを1つに圧縮して)、空白行を削除してコメント化された行を作成するパイプがあります。次に、各行の2番目のスペースで区切られたフィールドから、一意の2番目のスペースで区切られたフィールドを選択します/
。