linux – sed替换特定行号的特定列号值

linux – sed替换特定行号的特定列号值,第1张

概述我有一个5列csv文件(空格分隔),如下所示: username1 20130310 enabled 20130310 enabledusername2 20130310 enabled 20130321 disabledusername3 20130320 disabled 20130321 enabledusername4 20130310 disabled 20130310 disab @H_403_1@ 我有一个5列csv文件(空格分隔),如下所示:

username1 20130310 enabled 20130310 enabledusername2 20130310 enabled 20130321 Disabledusername3 20130320 Disabled 20130321 enabledusername4 20130310 Disabled 20130310 Disabled

我试图更改username4的第4列的值.

我的脚本已经获取了用户名4存储的行号和新值:所以我想用行号$lineNumber的$newValue替换第4列值.

在我的样本中:

newValue=anythinglineNumber=4

这样它将呈现:

username1 20130310 enabled 20130310 enabledusername2 20130310 enabled 20130321 Disabledusername3 20130320 Disabled 20130321 enabledusername4 20130310 Disabled anything Disabled

我计划使用sed而不是awk,因为使用sed我们可以使用-i进行内联更改

解决方法 这是一种方式:

$sed '/^username4/{s/ [^ ]*/ anything/3}' fileusername1 20130310 enabled 20130310 enabledusername2 20130310 enabled 20130321 Disabledusername3 20130320 Disabled 20130321 enabledusername4 20130310 Disabled anything Disabled# store changes back to the file $sed -i '/^username4/{s/ [^ ]*/ anything/3}' file

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

$awk '=="username4"{="anything"}1' fileusername1 20130310 enabled 20130310 enabledusername2 20130310 enabled 20130321 Disabledusername3 20130320 Disabled 20130321 enabledusername4 20130310 Disabled anything Disabled# store changes back to the file$awk '=="username4"{="anything"}1' file > tmp && mv tmp file

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

$linenumber=4$newvalue=anything $awk 'NR==n{=a}1' n=$linenumber a=$newvalue file username1 20130310 enabled 20130310 enabledusername2 20130310 enabled 20130321 Disabledusername3 20130320 Disabled 20130321 enabledusername4 20130310 Disabled anything Disabled$awk 'NR==n{=a}1' n=$linenumber a=$newvalue file > tmp && mv tmp file
总结

以上是内存溢出为你收集整理的linux – sed替换特定行号的特定列号值全部内容,希望文章能够帮你解决linux – sed替换特定行号的特定列号值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1028755.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存