【发布时间】:2017-12-13 21:01:28
【问题描述】:
我无法找到以下问题的解决方案: 我的文本文件的顶部看起来像这样
XXXXX
XXXXXX XXXXXXX
X
X
X
XX
X
XXXXXXE+00 XXXXXXEE+03 XXXXXXE+07 XXXXXXE+00 XXXXXXE+00
XXXXXXE+00 XXXXXXEE+03 XXXXXXE+07 XXXXXXE+00 XXXXXXE+00
XXXXXXE+00 XXXXXXEE+03 XXXXXXE+07 XXXXXXE+00 XXXXXXE+00
XXXXXXE+00 XXXXXXEE+03 XXXXXXE+07 XXXXXXE+00 XXXXXXE+00
X 是随机数。这种从第 16 行开始的模式(vim 显示为第 16 行)一直持续到文件末尾(根据 vim 为第 71 行)。这些行总是以空格键开头,后跟一个数字,两个数字之间是两个空格键。 我有一个变量 v ,其值例如 v=1.50 我想用变量 v 的值替换从第 16 行到第 71 行的所有行的最后一列的前 4 个 X,这意味着我希望在最后有这个文件(行首的空格应该保留) :
XXXXX
XXXXXX XXXXXXX
X
X
X
XX
X
XXXXXXE+00 XXXXXXEE+03 XXXXXXE+07 XXXXXXE+00 1.50XXE+00
XXXXXXE+00 XXXXXXEE+03 XXXXXXE+07 XXXXXXE+00 1.50XXE+00
XXXXXXE+00 XXXXXXEE+03 XXXXXXE+07 XXXXXXE+00 1.50XXE+00
XXXXXXE+00 XXXXXXEE+03 XXXXXXE+07 XXXXXXE+00 1.50XXE+00
我用 awk 试了一下,但我遇到的问题是它在数字之间添加了空格(如 1 . 5 0 ),而且我无法将它粘贴到正确的列和行中(vim 显示“二进制”列)我找不到正确的 awk 列。 我该怎么做?我想使用脚本对许多文件执行此操作。 非常感谢您的帮助!
【问题讨论】:
-
:%s/X\{6}E+00$/1.50XXE+00不起作用有什么原因吗?还是你想让它使用一些变量? -
嗨,是的,1.50 只是一个例子。我也有很多文件,所以我不能为每个文件输入 vim 并且想从每个文件的 bash 脚本中自动完成。而且我忘了写X是随机的不同数字,所以我不知道前面是什么。
-
当你说你有一个变量,你是什么意思?一个shell变量?某个程序中的变量?它的数据类型是什么?
-
wrt
I tried a bit with awk, but I had the problem that it adds spaces between the numbers (like 1 . 5 0 )- 我无法想象你写了什么 awk 代码来做到这一点,但如果你想帮助调试它,然后发布它。