0

最後の部分を除いて、文字列の先頭をすべて取得する必要がある場合によく遭遇します。

たとえば、ドメイン名のない FQDN のホスト部分:

www.example.org -> www
foo.bar.example.org -> foo.bar
foo.bar.baz.some.domain.name -> foo.bar.baz.some

(入力の末尾を削除する必要がある他の例にも同じことが当てはまります。)

cut私は通常、次のようにとを組み合わせて使用​​しますrev

echo "foo.bar.example.org" | rev | cut -d "." -f 3- | rev

これはうまくいきますが、これを行うためのより良い方法があるのだろうか?

4

1 に答える 1

2

あなたawkができること:

$ awk '{NF=NF-2}1' FS=. OFS=. file
www
foo.bar
foo.bar.baz.some

最後のNフィールドに一般化しN=2ます:

$ awk '{NF=NF-N}1' FS=. OFS=. N=2 file
www
foo.bar
foo.bar.baz.some

あなたsedができること:

$ sed 's/[.][^.]*[.][^.]*$//' file
www
foo.bar
foo.bar.baz.some

一般化:

$ sed -r 's/([.][^.]*){2}$//' file
www
foo.bar
foo.bar.baz.some
于 2013-07-25T13:17:06.780 に答える