我有一个大文件,第一列的格式如下。可以有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
简单的解释是:使用 awk
的 match
函数来匹配每行中最后一次出现的 _
,然后在打印其子项时在最后一个 _
之前打印字符串以将其删除,然后打印该行的其余部分(以及匹配部分和其余部分之间的空格)。
https://stackoverflow.com/questions/67168828/
相关文章:
amazon-web-services - 使用 http post flutter web 时出现
azure - 通过门户从 azure blob 容器下载多个文件,而不是一次下载一个文件
javascript - 用于检查集合的第一个字符和最后一个字符是否不同的正则表达式
python - 有没有一种好方法可以将函数累积应用于 pandas 系列字符串?
r - 检查 R 列中是否存在值向量,然后返回单个 True 值
spring - 不能模拟 StreamBridge Final
javascript - Mongoose 按 createdAt 排序