我有一个包含 3 列的文件,用逗号分隔并用方括号括起来..:
我想将所有行中以“e-3*”结尾的条目更改为“0”。
[6.902532920683853e-31,42,27.600000381469727],
[6.902532920683853,42e-31,27.600000381469727],
[6.902532920683853e,42,27.600000381469727e-32],
to
[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],
我认为问题是你的模式对于你想要的来说太笼统了。我设法通过使用以下内容获得预期的输出:
sed -r 's/(\[|,)[0-9]+(:?\.[0-9]+)?e\-[0-9]+/\10/g'
这可能不是最有效的模式,但它应该涵盖您的用例。
您可以在here看到它的工作原理,但其想法是,它将匹配一个左方括号或逗号,然后是任何以“e-”结尾的数字字符串(可选地带有小数点),后跟 1 或更多数字。所有内容都被替换为对第一个匹配项的引用(开括号“[”或逗号“,”),后跟文字“0”。
也谢谢您,特别是https://regexr.com/
的链接