我有一个文本文件,其内容如下:
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
g
全局搜索s
代替$
行结束x
保存并关闭