首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sed文本替换

sed文本替换
EN

Stack Overflow用户
提问于 2013-02-07 13:27:54
回答 2查看 100关注 0票数 1

我有一个包含数千行的文本文档文件。每一行如下所示

代码语言:javascript
复制
141.132.86.86,53240,203.178.142.200,80,6,550,22425,1089,1630060,40,40,453,17,52,1496,1500,61,14,11578,220465,33191,11,5649,230153,23516,6356945,6356945,6356945,6356945,0,0,0,0,0,550,22425,1089,1630060,1,2,0,0,22012,43572,0

我想知道是否可以使用sed替换/更改特定列的值。(列之间用逗号分隔)。

例如,如果我需要将第四列和第五列的值分别从80和6更改为1和2。

需要注意的是,不同行的值是不同的。我需要更改特定列的值。

提前感谢您的关心,感谢您的好意。

EN

回答 2

Stack Overflow用户

发布于 2013-02-07 14:14:47

使用纯Bash

代码语言:javascript
复制
#!/bin/sh
IFS=, read -a ca < a.txt
ca[3]=1
ca[4]=2
IFS=, read cs <<< "${ca[*]}"
echo $cs > a.txt
票数 0
EN

Stack Overflow用户

发布于 2013-02-07 14:25:26

Sed:

代码语言:javascript
复制
sed 's/\(\(.*,\)\{3\}\)80,6,\(.*\)/\11,2,\3/g' 

Awk不是为就地编辑而设计的。但是它为字段编辑提供了完美的支持,你可以像这样使用它:

代码语言:javascript
复制
awk 'BEGIN {FS=","} {OFS=","} {if($4 = 80) $4=1;if($5 = 6) $5=2;print}' input.txt > output.txt  && mv input.txt input.txt.old && mv output.txt input.txt
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14744221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档