首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在数字数据文件中搜索和替换字符串

在数字数据文件中搜索和替换字符串
EN

Unix & Linux用户
提问于 2015-04-24 20:13:07
回答 1查看 93关注 0票数 0

我有一个数据文件,我需要编辑它的形式如下:

代码语言:javascript
运行
复制
-8.915602898150751e-05-7.050591991128022e-05-4.361255125222242e-052.309505585477205e-05-2.223040239244275e-051.088544645124330e-011.000000000000000e-15
7.528375184423486e-062.558479420795495e-052.537280868441473e-04-5.119189471594489e-056.455268837875294e-054.463628820267331e-011.000000000000000e-15

因为你可以,数字没有空格,我想编辑文件以非常具体的方式(我将使用它作为一个输入文件的模拟工作)。我希望这份文件看起来像:

代码语言:javascript
运行
复制
 -1.0000000000000001e-001  0.0000000000000000e+000  0.0000000000000000e+000  4.3052618410549812e+009  0.0000000000000000e+000  0.0000000000000000e+000  2.4853118072193338e-015
  2.4106903033391415e-004  4.3586744793222273e-005  4.5561759893187341e-005 -4.0315591956328645e+007 -9.1758824977759705e+003 -2.5181138417225957e+004  2.4853118072193338e-015

我已经开发了一种算法来进行这样的编辑,并在Notepad++中进行了尝试,但是,程序在文件中添加了“不可见”字符,这使得它对我的模拟无效。以下是算法:

  1. 找到字符串“-1”并替换为字符串“-1”。(在替换的负号前面有一个空格)
  2. 对第2-9号重复第一步。
  3. 找到字符串“1”将其替换为字符串“1”。(在替换的1前面有两个空间)
  4. 对第2-9号重复第3步。
  5. 找到字符串"- 1“并将其替换为“-1”(负号与查找字符串中的1之间有两个空格)
  6. 对2-9号重复第5步。

我想在UNIX (我正在使用macbook终端)中这样做,因为我相信这不会添加不可见字符并破坏我的数据。有帮手吗?

提前谢谢!

EN

回答 1

Unix & Linux用户

发布于 2015-04-25 19:37:22

代码语言:javascript
运行
复制
sed -E '
   s/[0-9.+-]*e[-+]?[0-9]{2}/     &/g
   s/ *(.{22}[0-9])/\1/g' < input.txt > output.txt

这假定GNU或FreeBSD (或派生的OS/X) sed,或符合Unix/POSIX标准下一个版本的sed (适用于-E)。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/198462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档