sed - 就地更换

标签 sed awk

我有一个 CSV。我想编辑 CSV 的第 35 个字段并将更改写回第 35 个字段。这就是我在 bash 上所做的:

awk -F "," '{print $35}' test.csv  | sed -i 's/^0/+91/g'

因此,我使用 awk 拉动第 35 个条目,然后将字符串中起始位置的“0”替换为“+91”。这个工作完美,我在控制台上获得了所需的输出。

现在我希望这个新条目写入文件。我在考虑 sed 的“就地”替换功能,但这个胎儿需要和输入文件。在上面的命令中,我无法提供输入文件,因为我的主要命令是 awk,而 sed 正在从 awk 获取输入。

谢谢。

最佳答案

您应该选择这两种工具之一。至于sed ,它可以按如下方式完成:

sed -ri 's/^(([^,]*,){34})0([^,]*)/\1+91\3/' test.csv 

不确定 awk ,但@shellter 的评论可能对此有所帮助。

关于sed - 就地更换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11138434/

相关文章:

linux - 是否可以覆盖您正在处理的文件?

linux - 如何在立即打印时删除流中的新行?

linux - gawk 不会过滤掉更大的数字吗?

regex - 在 for 循环中将 shell 变量传递给 awk

bash if 语句,版本是否低于要求?

awk 输出到多个 shell 变量

linux - 使用模式和输入文件进行 grep 过滤

linux - sed 不遵守\t 或实际制表符

Java 打印编写器环绕

linux - bash 脚本 - 循环中的 2 个变量