【问题标题】:How to edit this file using grep or using cat or using vim or using another tool?如何使用 grep 或使用 cat 或使用 vim 或使用其他工具编辑此文件?
【发布时间】:2017-05-26 16:03:31
【问题描述】:

我的一个哥哥正在学习统计学。现在,他正在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\\
......................................................................
........................................................................
........................................................................

注意:不要对语法感到无聊(这些是 LaTeX 语法)。

如果有人有解决方案或建议,请提供。谢谢你。

【问题讨论】:

  • perl, vim, awk, sed ...?它是哪一个?我删除了除sed 之外的所有标签,因为它有一个赞成的答案。

标签: vim sed grep cat


【解决方案1】:

这是vim中的命令:

:%s/\.\d\{3}\zs\d\+//g

说明:

:进入命令模式

%是文件所有行的范围

s替换命令

\.\d\{3}\zs\d\+ 你想改变的模式

  • \. 文字点 (.)

  • \d\{3}匹配3个连续数字

  • \zs 从这里开始替换

  • \d\+ 一位或多位数字

g替换该行中的所有匹配项


关于grepcat 它们与替换文本无关。这些命令仅用于搜索和打印文件内容。

相反,您正在寻找的是 substitution 在 Linux 中有很多命令可以做到这一点,主要是 sedperlawkex 等。

【讨论】:

  • 谢谢。这很有帮助,因为我使用 vim。
  • 如果你能解释你的答案,它对另一个人有帮助。
  • @BandaMuhammadAlHelal 我已经编辑了我的答案。希望对您有所帮助!
【解决方案2】:

在 sed 中:

$ sed 's/\(\.[0-9]\{3\}\)[0-9]*/\1/g' file
      &se($\hat\beta_1$)&0.355&0.355&0.355\\
                         &mse($\hat\beta_1$)&.129&.129&.129\\

即。将句点开头的数字字符串替换为至少 3 个数字与前导句点和三个前数字。

【讨论】:

  • 投反对票时通常会发表评论。
猜你喜欢
  • 2015-05-18
  • 1970-01-01
  • 1970-01-01
  • 2012-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-24
  • 2013-05-05
相关资源
最近更新 更多