awk - 拆分但保留分隔符很少

我有一个大文件,第一列的格式如下。可以有3-6个不同的id,用“_”隔开

s1_asd_ucsd
b4_asd_id_vu
c10_id_js_uw
d4_sch_vu

我想将这一列拆分为两列。第 2 列包含最后一个 ID,第 1 列包含初始 ID;像下面这样

s1_asd  ucsd
b4_asd_id   vu
c10_id_js   uw
d4_sch  vu

我知道如何通过以下方式打印最后一列;但不知道如何在保留分隔符的同时打印以前的 ID。

awk '{n=split($1, b, "_"); }{  print b[n]}'

最佳答案

根据您展示的示例,您能否尝试以下操作。使用 GNU awk 编写和测试,应该可以在任何 awk 中使用。

awk 'match($0,/.*_/){print substr($0,RSTART,RLENGTH-1),substr($0,RSTART+RLENGTH)}' Input_file

简单的解释是:使用 awkmatch 函数来匹配每行中最后一次出现的 _ ,然后在打印其子项时在最后一个 _ 之前打印字符串以将其删除,然后打印该行的其余部分(以及匹配部分和其余部分之间的空格)。

https://stackoverflow.com/questions/67168828/

相关文章:

amazon-web-services - 使用 http post flutter web 时出现

azure - 通过门户从 azure blob 容器下载多个文件,而不是一次下载一个文件

javascript - 用于检查集合的第一个字符和最后一个字符是否不同的正则表达式

r - data.frame 中所有变量对的元素乘法总和

python - 有没有一种好方法可以将函数累积应用于 pandas 系列字符串?

r - 检查 R 列中是否存在值向量,然后返回单个 True 值

spring - 不能模拟 StreamBridge Final

javascript - Mongoose 按 createdAt 排序

macos - MacOS M1 上的 Docker kafka 问题停留在配置上

css - 在sass中混合两种颜色