我有一个包含 3 列的文件,用逗号分隔并用方括号括起来......:
我想将所有行中以“e-3*”结尾的条目更改为“0”。
[6.902532920683853e-31,42,27.600000381469727],
[6.902532920683853,42e-31,27.600000381469727],
[6.902532920683853e,42,27.600000381469727e-32],
到
[0,42,27.600000381469727],
[6.902532920683853,0,27.600000381469727],
[6.902532920683853e,42,0],
我尝试过 sed,但我不知道如何寻址这些列。
这适用于第一列,但删除第二行中的第一列以及第三行中的第一列和第二列。
cat columns.test |sed 's/[0-9].*e-31/0/'
[0,42,27.600000381469727],
[0,27.600000381469727],
[0],
我认为问题是你的模式对于你想要的来说太笼统了。我设法通过使用以下内容获得预期的输出:
它可能不是最有效的模式,但它应该涵盖您的用例。
您可以在此处看到它,但其想法是,它将匹配一个左方括号或逗号,然后匹配以“e-”结尾的任何数字字符串(可选地带有小数点),后跟 1 个或多个数字。所有这些都被替换为对第一个匹配项的引用(开括号“[”或逗号“,”),后跟文字“0”。
这可能对你有用(GNU sed):
这将在整个文件中全局匹配一个可选的小数,后跟一个或多个数字,后跟
e-3
,后跟一个或多个数字,并用 0 替换匹配。注意:
-E
命令行选项可降低正则表达式的视觉复杂性。