Linuxにテキストファイルがあり、内容は次のようになっています。
help.helloworld.com:latest.world.com
dev.helloworld.com:latest.world.com
以下のようにコロンの前の内容を取得したい:
help.helloworld.com
dev.helloworld.com
どうすればターミナル内でそれを行うことができますか?
これがcut
の目的です。
$ cat file
help.helloworld.com:latest.world.com
dev.helloworld.com:latest.world.com
foo:baz:bar
foo
$ cut -d: -f1 file
help.helloworld.com
dev.helloworld.com
foo
foo
区切り文字を:
に-d:
で設定し、最初のフィールド(-f1
)のみを印刷するように指示するだけです。
または代替:
$ grep -o '^[^:]*' file
help.helloworld.com
dev.helloworld.com
これは、各行の先頭(^
)コロンなし([^:]*
)。
間違いなくawk
をお勧めします:
awk -F ':' '{print $1}' file
:
をフィールド区切り文字として使用し、最初のフィールドを印刷します。
次のファイルを考慮してくださいfile.txt
:
help.helloworld.com:latest.world.com
dev.helloworld.com:latest.world.com
no.colon.com
colon.at.the.end.com:
sed
を使用して、コロンの後のすべてを削除できます。
sed -e 's/:.*//' file.txt
これは、コメントで指摘されたすべてのコーナーケースで機能します。コロンで終了する場合、またはコロンがない場合ですが、質問自体では言及されていません。コメントを提供してくれた@Rakesh Sharma、@ mirabilos、@ Freddyに感謝します。質問に答えることは学ぶための素晴らしい方法です。
GNU grepが必要です。macOSや他のBSDなどのデフォルトのgrepでは動作しません。
このような意味ですか:
grep -oP '.*(?=:)' file
出力:
help.helloworld.com
dev.helloworld.com