使用 awk 仅获取行的一部分
我有一个日志文件,我使用 awk 来提取所需的列。我的命令是
awk '{ print $2" "$5" " $6}' log.txt
$5 列包含服务器名称,格式可以类似于 @:server1@:@:@:, server2@:@:@:@:@:, @:@:Server3 ,没有固定数量的 @: 符号。
如何修改我的语句,以便从第 5 列中删除所有“@:”以仅获取服务器名称?
I have a log file and i use awk to extract the required columns. My command is
awk '{ print $2" "$5" " $6}' log.txt
The $5 column contains the servername and the format can be like @:server1@:@:@:, server2@:@:@:@:@:, @:@:Server3 with no fixed amount of @: symbols.
How do I modify my statement so that I remove all the '@:' from the column 5 to get only the server name?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用 gensub 函数。
编辑:请参阅下面格伦·杰克曼的评论,了解可能的可移植性影响。
You can use the gensub function.
EDIT: See glenn jackman's comment, below, for possible portability implications.
我建议这样:
请注意,您还可以编写
print $2,$5,$6
- ',' 被输出字段分隔符替换,默认情况下为空格。(编辑以从字符串末尾删除“@:”)
I'd suggest something like this:
Note that you can also write
print $2,$5,$6
- the ',' is replaced by the output field separator, which is by default a space.(edited to remove "@:" from the end of the string as well)