将“;”附加到包含字符“:”的行尾的最简单方法是什么?

将“;”附加到包含字符“:”的行尾的最简单方法是什么?

我有一个文本文件,其内容如下:

body
    font-size: 12px
    color: blue

td
    font-size: 14px

...

我想附加;到包含的行:,因此内容将是:

body
    font-size: 12px;
    color: blue;

td
    font-size: 14px;

...

在 Linux 中执行此操作的最简单的方法是什么?

答案1

使用正则表达式替换。许多编辑器都支持正则表达式,包括 Vim。

以下是使用 sed(流编辑器)从命令行执行此操作的方法:

sed -i -e "s/.*:.*/&;/" INPUT_FILE.css

某些版本的 sed 不支持就地编辑(将输出文件写入输入文件):

sed -e "s/.*:.*/&;/" INPUT_FILE.css > OUTPUT_FILE.css

解释:

sed             invoke Stream EDitor commmand line tool
-i              edit in-place
-e              the next string will be the regular expression: s/.*:.*/&;/
INPUT_FILE.css  the name of your text file

正则表达式(RegEx)详细解释:

s   RegEx command indicates substitution
/   RegEx delimiter: separates command and match expression
.*  any string followed by...
:   a colon character followed by...
.*  any string
/   RegEx delimiter: separates match expression and replacement expression
&   RegEx back reference, entire string that was matched by match expression
;   the semicolon you wish to add
/   RegEx delimiter: ends replacement expression

答案2

在 Vim 或任何其他支持正则表达式的编辑器中

:%s/\(:.*\)$/\1;/

答案3

你可以在 Ex 模式下使用 Vim:

ex -sc 'g/:/s/$/;/' -cx file
  1. g全局搜索

  2. s代替

  3. $行结束

  4. x保存并关闭

相关内容