awk - 在 Linux 上使用 sed/awk 或任何其他方式使用模式进行文本过滤
问题描述
输入(非特定大小)
w23r.abc:eg-1/23-we34.abc:eg-2/43 we4r.abc:eg-2/25-w5wr.abc:eg-1/63 wewr.abc:eg-6/23-45wr.abc:eg-3/24
期望的输出
w23r.abc:eg-1/23
we4r.abc:eg-2/25
wewr.abc:eg-6/23
如何在 Linux 上使用 sed/awk 或其他文本编辑工具实现上述目标?
echo w23r.abc:eg-1/23-we34.abc:eg-2/43 we4r.abc:eg-2/25-w5wr.abc:eg-1/63 wewr.abc:eg-6/23-45wr.abc:eg-3/24 | tr ' ' '\n' | cut -d- -f3-
we34.abc:eg-2/43
w5wr.abc:eg-1/63
45wr.abc:eg-3/24
解决方案
使用 GNU awk:
awk '{print $1,$2}' FS='-' RS=' ' OFS='-' file
FS
: 输入字段分隔符
RS
: 输入记录分隔符,默认换行
OFS
:输出字段分隔符
输出:
w23r.abc:eg-1/23 we4r.abc:eg-2/25 wewr.abc:eg-6/23
推荐阅读
- java - ArrayList 在另一个类中访问时为空
- c# - 打开多个邮件时获取发件人电子邮件地址c#
- magento - 打印 Magento 2 的地址/送货标签
- azure-devops - Azure Devops:拉取请求评论:链接任务
- java - 这是什么意思?爪哇
- google-cloud-platform - InfiniteStreamRecognize 实时 STT 示例不起作用
- optimization - 在运行时用移位替换乘以 2
- amazon-web-services - 选择或汇总针对 Cloudwatch 数据代理指标记录的维度
- wso2 - 我需要在 WSO2 Integration Studio 中应用 Aggregator Mediator
- c++ - 类型转换提升多精度整数返回错误答案