Gus*_*ler 2 awk gawk text-formatting
我的测试文件中有以下数据结构:
"111","222","AAABBB","333","444","555"
Run Code Online (Sandbox Code Playgroud)
我想转换第三个字段,以便在第三个 [AZ] 之后有一个“-”,如下所示:
"111","222","AAA-BBB","333","444","555"
Run Code Online (Sandbox Code Playgroud)
使用 split() 函数是完成这项工作的最佳工具吗?这是我尝试过的:
awk 'BEGIN{OFS=FS=","} {split($3, a, "[A-Z]{3}", seps); print seps[1]"/"seps[2]};' test
Run Code Online (Sandbox Code Playgroud)
上面的命令可以满足我的要求,但是如何打印包括更新后的 $3 字段在内的整行?结果:
AAA-BBB
Run Code Online (Sandbox Code Playgroud)
简短的awk解决方案:
awk 'BEGIN{ OFS=FS="," }{ sub(/[A-Z]{3}/, "&-", $3) }1' file
Run Code Online (Sandbox Code Playgroud)
[A-Z]{3} - 匹配 3 个大写字母的正则表达式模式& - 代表正则表达式模式匹配的精确子字符串输出:
"111","222","AAA-BBB","333","444","555"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
361 次 |
| 最近记录: |