sed -i "s,1700870,1700888,g" test.txt
得到数据如下,一开始我认为这种方法并无问题,可后来发现犯了很傻的错误。 第一列的最后一个字段也被替换了。
"355356" "1700888" "1" "0202" ""
"355356" "1700871" "2" "" "02046"
"355356" "1700888" "" "2" "02046"
"1700888" "1700873" "" "1" "0202"
后来用awk去解决这个问题
思路是对第二列等于1700870的行做处理
awk -F "\"" '{if ($4==1700870) $4=1700888}' test.txt
什么结果都没有打印,后来在网上搜了一下,想打印处理过的文本要么用print,要么在最后加个1,这里的1是个省略符,等价于 /.*/ 如下:
awk -F "\"" '{if ($4==1700870) $4=1700888}1' test.txt
转载地址:https://blog.csdn.net/wangxin6722513/article/details/46050615