我必须使用这样组织的数据处理文件
AAAAA:BB:CCC:EEEE:DDDD
FF:III:JJJ:KK:LLL
MMMM:NN:OOO:PP
etc
Run Code Online (Sandbox Code Playgroud)
列可以具有不同的长度,但行始终具有相同的列数.
我希望能够剪切给定行的特定列并将其更改为我想要的值.
例如,我将应用我的命令并将文件更改为
AAAAA:BB:XXXX:EEEE:DDDD
FF:III:JJJ:KK:LLL
MMMM:NN:OOO:PP
Run Code Online (Sandbox Code Playgroud)
我知道如何用sed选择一个特定的行,然后剪切字段,但我不知道如何用我的值替换字段.
谢谢
这是一种方法awk:
按照您的示例,如果您想要替换第1行的第3个字段:
awk 'BEGIN{FS=OFS=":"} {if (NR==1) {$3 = "XXXX"}; print}' input_file
Run Code Online (Sandbox Code Playgroud)
输入:
AAAAA:BB:CCC:EEEE:DDDD
FF:III:JJJ:KK:LLL
MMMM:NN:OOO:PP
Run Code Online (Sandbox Code Playgroud)
输出:
AAAAA:BB:XXXX:EEEE:DDDD
FF:III:JJJ:KK:LLL
MMMM:NN:OOO:PP
Run Code Online (Sandbox Code Playgroud)
说明:
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
Run Code Online (Sandbox Code Playgroud)
请注意,这也将替换部分匹配,例如ABCCCDD- >ABXXXXDD
| 归档时间: |
|
| 查看次数: |
5326 次 |
| 最近记录: |