Joe*_*eep 9 grep text-processing
我在 Linux 上有一个文本文件,其内容如下所示:
help.helloworld.com:latest.world.com
dev.helloworld.com:latest.world.com
Run Code Online (Sandbox Code Playgroud)
我想获取冒号前的内容,如下所示:
help.helloworld.com
dev.helloworld.com
Run Code Online (Sandbox Code Playgroud)
我怎样才能在终端内做到这一点?
ter*_*don 37
这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
Run Code Online (Sandbox Code Playgroud)
您只需将分隔符设置为:
with-d:
并告诉它只打印第一个字段 ( -f1
)。
Fre*_*ddy 19
或者替代方案:
$ grep -o '^[^:]*' file
help.helloworld.com
dev.helloworld.com
Run Code Online (Sandbox Code Playgroud)
这将返回从每行开头 ( ^
)开始的任何没有冒号 ( [^:]*
) 的字符。
Cen*_*ane 18
肯定会推荐awk
:
awk -F ':' '{print $1}' file
Run Code Online (Sandbox Code Playgroud)
用途:
作为一个字段分隔符,并打印第一个字段。
考虑以下文件file.txt
:
help.helloworld.com:latest.world.com
dev.helloworld.com:latest.world.com
no.colon.com
colon.at.the.end.com:
Run Code Online (Sandbox Code Playgroud)
您可以使用sed
删除冒号后的所有内容:
help.helloworld.com:latest.world.com
dev.helloworld.com:latest.world.com
no.colon.com
colon.at.the.end.com:
Run Code Online (Sandbox Code Playgroud)
这适用于评论中指出的所有极端情况——如果它以冒号结尾,或者如果没有冒号,尽管问题本身没有提到这些。感谢 @Rakesh Sharma、@mirabilos 和 @Freddy 的评论。回答问题是一种很好的学习方式。