linux替换指定行指定列的内容,linux – sed替换特定行号的特定列号值

这是一种方式:

$sed '/^username4/{s/ [^ ]*/ anything/3}' file

username1 20130310 enabled 20130310 enabled

username2 20130310 enabled 20130321 disabled

username3 20130320 disabled 20130321 enabled

username4 20130310 disabled anything disabled

# store changes back to the file

$sed -i '/^username4/{s/ [^ ]*/ anything/3}' file

但是因为sed具有-i选项而避免使用awk并不是一个好理由. awk更适合处理这类问题.

$awk '$1=="username4"{$4="anything"}1' file

username1 20130310 enabled 20130310 enabled

username2 20130310 enabled 20130321 disabled

username3 20130320 disabled 20130321 enabled

username4 20130310 disabled anything disabled

# store changes back to the file

$awk '$1=="username4"{$4="anything"}1' file > tmp && mv tmp file

使用awk,您可以轻松地进行字段比较和编辑,使用shell变量不是引用噩梦,并且理解您昨天写的脚本不是和sed不同的问题:

$linenumber=4

$newvalue=anything

$awk 'NR==n{$4=a}1' n=$linenumber a=$newvalue file

username1 20130310 enabled 20130310 enabled

username2 20130310 enabled 20130321 disabled

username3 20130320 disabled 20130321 enabled

username4 20130310 disabled anything disabled

$awk 'NR==n{$4=a}1' n=$linenumber a=$newvalue file > tmp && mv tmp file

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值