【问题标题】:How to Replace a hash character in file?如何替换文件中的哈希字符?
【发布时间】:2013-09-10 02:11:32
【问题描述】:

如何从文件中删除“#”字符

 File Name: /etc/ironman.d

 #dir /usr/comicon
 #dir2 /usr/individuality
 #dir3 /usr/land

如何删除 dir2 之前的“#”字符。没有办法维护行号。 我试过了

 dirpath='#dir2 /usr/individuality'
 ${dirpath#/#}

但它只在 $dirpath 中删除,而不在实际文件中删除,如果我使用上述方法删除 '#' 然后添加,我会得到一个没有 '#' 的 $dirpath 副本,但我只想要没有'的单个条目#'在文件中。如何删除 # 就地(在 dir2 之前)

【问题讨论】:

    标签: regex string bash grep


    【解决方案1】:

    您可以使用sed(1) 编辑文件:

    sed -e 's/#dir2/dir2/' /etc/ironman.d
    

    【讨论】:

    • 有没有办法使用 awk ?
    • 是的,有一种使用 awk 的方法。你到底在问什么?
    • 我想使用 awk 进行替换。谢谢!
    • s/#// 将删除每行最左边出现的#s/#//g 将删除每行中出现的所有 #
    • sed -i 通常很危险。
    【解决方案2】:

    一个 awk 解决方案:

    awk -F'#' '{print $2}' /etc/ironman.d
    

    【讨论】:

    • 或 sed 替换每个第一个 # sed -e 's/^#//' /etc/ironman.d
    • 当行中没有 # 时,awk 解决方案将不起作用。或多个#'s
    • 我可能不完全理解你想要什么,但这里有另一个 awk 可以尝试awk '/dir2/{$1="dir2"}1' /etc/ironman.d
    【解决方案3】:

    替换所有前导#:

    sed -e 's/^#*//' /etc/ironman.d
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-16
      • 1970-01-01
      • 2015-04-29
      • 2011-11-19
      • 2019-12-19
      • 2020-04-10
      • 2010-12-02
      相关资源
      最近更新 更多