AWK将一个大字符串替换为一列中的一部分(剪切一部分),并完整打印所有其他列,保持格式不变



我想用它的一部分替换一个大字符串——第2列第二个斜杠"/"中的文本。此外,还应保留格式。

我的文本是

99-AAA-9999 |  ZZZ/AAA/999999/AAA/99.99.9999                        |            |       9.99 |   99999.99 |
99-AAA-9999 |  ZZZ/AAAA AAAA/999999/AAA/99.99.9999                  |            |       9.99 |    9999.99 |
99-AAA-9999 |  ZZZ/AA AAAAAAA/999999/AAA/99.99.9999                 |            |       9.99 |   99999.99 |
99-AAA-9999 |  ZZZ/AAA AAAAA AAAAAAA AAAAAA/999999/AAA/99.99.9999   |            |       9.99 |   99999.99 |
99-AAA-9999 |  ZZZ/AAAA AAAAAA AAAAA/999999/AAA/99.99.9999          |            |       9.99 |   99999.99 |

我想在从ZZZ/AA中删除文本后这样。。。。。直到第二个斜杠"/",具有良好的格式

99-AAA-9999 |  999999/AAA/99.99.9999 |            |       9.99 |   99999.99 |
99-AAA-9999 |  999999/AAA/99.99.9999 |            |       9.99 |    9999.99 |
99-AAA-9999 |  999999/AAA/99.99.9999 |            |       9.99 |   99999.99 |
99-AAA-9999 |  999999/AAA/99.99.9999 |            |       9.99 |   99999.99 |
99-AAA-9999 |  999999/AAA/99.99.9999 |            |       9.99 |   99999.99 |

实际上还有许多其他列,但我只提供了示例数据。注意:所有的文本和数字都不相同。

请指导我如何使用awk或sed,最好是awk。

$ sed 's:[^ /]*/[^/]*/([^|]*[^ |]) *|:1 |:' file
99-AAA-9999 |  999999/AAA/99.99.9999 |            |       9.99 |   99999.99 |
99-AAA-9999 |  999999/AAA/99.99.9999 |            |       9.99 |    9999.99 |
99-AAA-9999 |  999999/AAA/99.99.9999 |            |       9.99 |   99999.99 |
99-AAA-9999 |  999999/AAA/99.99.9999 |            |       9.99 |   99999.99 |
99-AAA-9999 |  999999/AAA/99.99.9999 |            |       9.99 |   99999.99 |

相关内容

最新更新