我有一个包含数千行的文本文档。每行看起来如下
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。
需要注意的是,不同行的价值不同。我需要更改特定列的值。
感谢您提前照顾并感谢您的善意。
答案 0 :(得分:0)
使用纯Bash
#!/bin/sh
IFS=, read -a ca < a.txt
ca[3]=1
ca[4]=2
IFS=, read cs <<< "${ca[*]}"
echo $cs > a.txt
答案 1 :(得分:0)
桑达:
sed 's/\(\(.*,\)\{3\}\)80,6,\(.*\)/\11,2,\3/g'
Awk并非旨在就地编辑内容。但它为现场编辑提供了完美的支持,无论如何你都可以使用它:
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