已关闭。此问题需要超过focused。当前不接受答案。
**想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。
2天前关闭。
Improve this question
我在一个csv文件中有1000列,我想将每个单元格中的值“2008”替换为“1”,而其他不包括“2008”的单元格应该是“0”。我该怎么做?
我有什么:
| 第1栏|......第1000列|
| --------------|--------------|
| 二零零八年|2014年|
| 二○一○年|二零零八年|
期望输出:
| 第1栏|...第1000列|
| --------------|--------------|
| 1|0|
| 0|1|
3条答案
按热度按时间yk9xbfzb1#
有很多方法可以做到这一点,但其中一种方法是使用
sed
命令:sed -i 's/2008/1/g' yourFile.csv
-i
意味着in-place
,这意味着您的文件将立即被编辑。s/...
用于替换g
用于全局。sed的默认行为是编辑该行,并在第一个匹配项处停止,然后从下一行开始。通过在末尾添加g
,您将告诉sed沿着该行继续下去,并对每个匹配项进行更改注意:Bash是相当无情的。开始尝试使用它的一个好方法是在尝试编辑文件之前备份文件。在bash中没有Ctrl+z进行文件编辑。
64jmpszr2#
支持像
12008
这样的字段比所有字段都是最多4位数的数字时更复杂:如果没有字段的限制,请使用
awk
。vkc1a9a23#
假设:
2008
的任何字段将更改为0
(例如,920089
和abc2008def
将更改为0
)示例数据文件:
一个
awk
的想法:这将产生: