awkまたはsedを使用して、最上位ドメイン(TLD)と2番目のレベルドメイン(SLD)を削除します。

awkまたはsedを使用して、最上位ドメイン(TLD)と2番目のレベルドメイン(SLD)を削除します。

テキストファイルにサブドメインがないドメインのリストがあります。 TLDとSLDを削除する必要があります。

入力する

google.uk
example.com
amazon.co.uk
domain.ca.uk
education.edu.it

予想出力:

google
example
amazon
domain
education

答え1

これにはawkやsedは必要ありません。これがcut存在します。

$ cut -d'.' -f1 file
google
example
amazon
domain
education

答え2

私は私の質問に対する答えを見つけました。とても簡単であることがわかりました

awk -F. '{print $1}' input_file
  • 私は使用する」。 '-F' を区切り文字として使用します。このように、SLDとTLDを$ 2および/または$ 3列に入れました。

  • 「{print $1}」を使用すると、最初の列のテキストのみが印刷され、これが必要な出力です。

答え3

sed "s/\..*//" filename

google
example
amazon
domain
education

\.最初のテキストポイントとそれ以降のすべての項目と一致します.*。何も置き換えられないため、s最初のポイントから始まるすべてのアイテムが削除されます。

答え4

使用幸せ(以前のPerl_6)

~$ raku -ne 'put .split(".")[0];'  input_file

awkおそらくRakuソリューションが役に立ちます。上記は、Raku(およびPerl)がゼロインデックスであることを除いて、コードをかなり同様に翻訳したものです。 Rakuの-ne「非自動印刷ライン」コマンドラインフラグを使用してください(よりsed類似した動作のためには、Rakuの-peコマンドラインフラグを使用してください)。

RakuはPerlよりも少ないコマンドラインスイッチを提供するので、言語でより多くの作業を行うことができます(コード移植性の向上)。これは、結果文字列からsplit破壊的に削除するために使用されるフィールド区切り文字を定義します。.その後、[0]インデックスが0の最初の要素はputput最後に改行文字を追加する「print-using-terminator」の略)です。

入力例:

google.uk
example.com
amazon.co.uk
domain.ca.uk
education.edu.it

出力例:

google
example
amazon
domain
education

https://raku.org

関連情報