/en_US.UTF-8/s/^# 的含义 //

/en_US.UTF-8/s/^# 的含义 //

前几天我看到了这个:

sed --in-place '/en_US.UTF-8/s/^# //' /etc/locale.gen

我理解除了 之外的所有内容'/en_US.UTF-8/s/^# //'。我理解en_US.UTF-8但它周围的内容是什么。它看起来像 RegEx。

答案1

sed                            # stream editor

--in-place                     # save changes to same filename

'/en_US.UTF-8/s/^# //'         # program/script for sed 

    /en_US.UTF-8/              # on any line that contains this text
    s/^# //                    # remove any initial 'comment' designator

/etc/locale.gen                # filename to be read then replaced

因此它取消注释en_US.UTF-8文件中的行locale.gen

有一个手册页sed对此进行了解释。网上有很多关于 sed 的介绍,涵盖了这一点。

答案2

我全都明白,除了'/en_US.UTF-8/s/^# //'

假设这是正确的,它会删除包含某处的#行开头的和空格。en_US.UTF-8

因此它变成了这样:

# en_US.UTF-8 foo bar
# foo bar en_US.UTF-8

变成这样:

en_US.UTF-8 foo bar
foo bar en_US.UTF-8

分解:

  • ' '- 命令的正常部分sed
  • /en_US.UTF-8/- 寻找en_US.UTF-8其中的线条。
  • s- 替代命令。
  • /^# /- 正则表达式。如果行以#空格开头...
  • //- 空格替换。将 # 和空格变成...无(无字符 - 已删除!)。

相关内容