如何使用 grep 或使用 cat 或使用 vim 或使用其他工具编辑此文件?
How to edit this file using grep or using cat or using vim or using another tool?
我的一位哥哥正在学习统计。现在,他正在LaTeX写论文。几乎所有的内容都是为论文而写的。他为每个用于计算的值取了 5 个数字(例如 5.55534)。但是,最后一次他的教练说要在点后将这些更改为 3 个数字(例如 5.555),这让我的兄弟遇到了麻烦。手动查找和更正这些并不容易。所以,他叫我帮忙。
我相信还有一个我知道的简单解决方案。部分论文的快照看起来像-
&se($\hat\beta_1$)&0.35581&0.35573&0.35573\
&mse($\hat\beta_1$)&.12945&.12947&.12947\
\addlinespace
&$\hat\beta_2$&0.03329&0.03331&0.03331 \
&se($\hat\beta_2$)&0.01593&0.01592&0.01591\
&mse($\hat\beta_2$)&.000265&.000264&.000264 \
\midrule
{n=100} & $\hat\beta_1$&-.52006&-.52001&-.51946\
&se($\hat\beta_1$)&.22819&.22814&.22795\
&mse($\hat\beta_1$)&.05247&.05244&.05234\
\addlinespace
&$\hat\beta_2$&0.03134&0.03134&0.03133 \
&se($\hat\beta_2$)&0.00979&0.00979&0.00979\
&mse($\hat\beta_2$)&.000098&.000098&.000098
我要-
&se($\hat\beta_1$)&0.355&0.355&0.355\
&mse($\hat\beta_1$)&.129&.129&.129\
......................................................................
........................................................................
........................................................................
Note: Don't feel boring for the syntax(These are LaTeX syntax).
如有解决方案或建议,请提供。谢谢你。
这是vim
中的命令:
:%s/\.\d\{3}\zs\d\+//g
解释:
:
进入命令模式
%
是文件所有行的范围
s
替换命令
\.\d\{3}\zs\d\+
您要更改的模式
\.
字面点(.)
\d\{3}
匹配 3 个连续数字
\zs
从这里开始替换
\d\+
一位或多位
g
替换行中所有出现的地方
关于grep
和cat
,它们与替换文本无关。这些命令仅用于搜索和打印文件内容。
相反,您正在寻找的是 替换 Linux 中有很多命令可以做到这一点,主要是 sed
、perl
, awk
, ex
等等
在 sed 中:
$ sed 's/\(\.[0-9]\{3\}\)[0-9]*//g' file
&se($\hat\beta_1$)&0.355&0.355&0.355\
&mse($\hat\beta_1$)&.129&.129&.129\
即。用至少 3 个带前导句点和前三个数字的数字替换句点开头的数字字符串。
我的一位哥哥正在学习统计。现在,他正在LaTeX写论文。几乎所有的内容都是为论文而写的。他为每个用于计算的值取了 5 个数字(例如 5.55534)。但是,最后一次他的教练说要在点后将这些更改为 3 个数字(例如 5.555),这让我的兄弟遇到了麻烦。手动查找和更正这些并不容易。所以,他叫我帮忙。
我相信还有一个我知道的简单解决方案。部分论文的快照看起来像-
&se($\hat\beta_1$)&0.35581&0.35573&0.35573\
&mse($\hat\beta_1$)&.12945&.12947&.12947\
\addlinespace
&$\hat\beta_2$&0.03329&0.03331&0.03331 \
&se($\hat\beta_2$)&0.01593&0.01592&0.01591\
&mse($\hat\beta_2$)&.000265&.000264&.000264 \
\midrule
{n=100} & $\hat\beta_1$&-.52006&-.52001&-.51946\
&se($\hat\beta_1$)&.22819&.22814&.22795\
&mse($\hat\beta_1$)&.05247&.05244&.05234\
\addlinespace
&$\hat\beta_2$&0.03134&0.03134&0.03133 \
&se($\hat\beta_2$)&0.00979&0.00979&0.00979\
&mse($\hat\beta_2$)&.000098&.000098&.000098
我要-
&se($\hat\beta_1$)&0.355&0.355&0.355\
&mse($\hat\beta_1$)&.129&.129&.129\
......................................................................
........................................................................
........................................................................
Note: Don't feel boring for the syntax(These are LaTeX syntax).
如有解决方案或建议,请提供。谢谢你。
这是vim
中的命令:
:%s/\.\d\{3}\zs\d\+//g
解释:
:
进入命令模式
%
是文件所有行的范围
s
替换命令
\.\d\{3}\zs\d\+
您要更改的模式
\.
字面点(.)\d\{3}
匹配 3 个连续数字\zs
从这里开始替换\d\+
一位或多位
g
替换行中所有出现的地方
关于grep
和cat
,它们与替换文本无关。这些命令仅用于搜索和打印文件内容。
相反,您正在寻找的是 替换 Linux 中有很多命令可以做到这一点,主要是 sed
、perl
, awk
, ex
等等
在 sed 中:
$ sed 's/\(\.[0-9]\{3\}\)[0-9]*//g' file
&se($\hat\beta_1$)&0.355&0.355&0.355\
&mse($\hat\beta_1$)&.129&.129&.129\
即。用至少 3 个带前导句点和前三个数字的数字替换句点开头的数字字符串。