【问题标题】:replace dots in a string from file bash从文件bash替换字符串中的点
【发布时间】:2020-04-16 17:38:22
【问题描述】:

我正在尝试替换文件中的字符串,内容如下:

node11d:hostname1:KY home node11d 202014
node2:hostname1:KY home node2 202014
node3c1:hostname1:KY home node3c1 202014

我想要这个输出:

hostname1 home node11d 202014
hostname1 home node2 202014
hostname1 home node3c1 202014

谢谢!

【问题讨论】:

  • 在 SO 上,我们鼓励用户发布他们为解决自己的问题所做的努力,所以请这样做并让我们知道。
  • SO 不是代码编写服务。您已经尝试过什么,遇到过什么问题?请阅读How to Ask。 FWIW 你可以使用sedawk。这是一个类似的问题:grep substring between two delimiters
  • 这真的不需要尝试。基本的 awk 和 sed 问题对于 stackoverflow 来说是合理的。

标签: bash


【解决方案1】:

你可以使用awk:

awk -F"[: ]" '{print $2,$4,$5,$6}' yourfile

这只是用冒号或空格(分成列)将每一行分开,然后打印出第 2、第 4、第 5 和第 6 列。显然,如果您的文件在基于此拆分的列数上有所不同,那么您将必须获得更多创意。

【讨论】:

    【解决方案2】:
    cat foo.txt | awk '{gsub(/ /,":");print}' | awk -F":" '{print $2,$4,$5,$6}' > new_foo.txt
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-21
      • 2015-07-07
      • 2019-05-19
      • 2021-03-19
      • 1970-01-01
      • 2019-03-28
      • 2015-02-05
      • 2015-01-16
      相关资源
      最近更新 更多