gpt4 book ai didi

bash - 剪切并替换 bash

转载 作者:行者123 更新时间:2023-11-29 09:20:44 24 4
gpt4 key购买 nike

我必须处理一个包含这样组织的数据的文件

AAAAA:BB:CCC:EEEE:DDDD
FF:III:JJJ:KK:LLL
MMMM:NN:OOO:PP
etc

列的长度可以不同,但​​行的列数始终相同。

我希望能够剪切给定行的特定列并将其更改为我想要的值。

例如,我将应用我的命令并将文件更改为

AAAAA:BB:XXXX:EEEE:DDDD
FF:III:JJJ:KK:LLL
MMMM:NN:OOO:PP

我知道如何使用 sed 选择特定行,然后剪切该字段,但我不知道如何用我拥有的值替换该字段。

谢谢

最佳答案

下面是使用 awk 的方法:

继续你的例子,如果你想替换第一行的第三个字段:

awk 'BEGIN{FS=OFS=":"} {if (NR==1) {$3 = "XXXX"}; print}' input_file

输入:

AAAAA:BB:CCC:EEEE:DDDD
FF:III:JJJ:KK:LLL
MMMM:NN:OOO:PP

输出:

AAAAA:BB:XXXX:EEEE:DDDD
FF:III:JJJ:KK:LLL
MMMM:NN:OOO:PP

解释:

  • awk: 调用awk命令
  • '...':单引号内的所有内容都是 awk 的指令
  • BEGIN{FS=OFS=":"}:使用 : 作为输入和输出的分隔符​​。 FS 代表字段分隔符。 OFS 代表输出字段分隔符。
  • if (NR==1) {$3 = "XXXX"};:如果目前读取的记录数(NR)为1,则设置第3个字段 ($3) 到“XXXX”。
  • print: 打印当前行
  • input_file:输入文件的名称。

如果您想要完成的只是将文件中所有出现的 CCC 替换为 XXXX,只需执行以下操作:

sed -i 's/CCC/XXXX/g` input_file

请注意,这也会替换部分匹配项,例如 ABCCDD -> ABXXXXDD

关于bash - 剪切并替换 bash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13588949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com