gpt4 book ai didi

shell - 用制表符替换所有前 4 个空格

转载 作者:行者123 更新时间:2023-12-05 00:18:20 24 4
gpt4 key购买 nike

我正在做一些文档工作,我有一个这样的树结构:

A
BB
C C
DD

如何用 '-' 替换行首中所有出现的 2 个空格, 喜欢:
A
--BB
--C C
----DD

我试过 sed 's/ /-/g' ,但这会替换所有出现的 2 个空格;还有 sed 's/^ /-/g' ,这只是替换了第一次出现的 2 个空格。我怎样才能做到这一点?

最佳答案

行首四个空格的正则表达式为 /^ /我把斜线放在那里只是为了划分表达式(它们不是实际正则表达式的一部分,但它们被 sed 用作分隔符)。

sed 's/^    /\t/' file

近期 sed版本,您可以添加 -i修改选项 file就地(即 sed 将用修改后的文件替换文件);在 *BSD(包括 OSX)上,您需要 -i ''带有空选项参数。
\t标签的转义码也不是普遍支持的;如果这是一个问题,您的 shell 可能允许您通过在它前面加上 ctrl-V 来键入文字制表符。

(您的问题标题为“tab”,但您的问题是关于破折号。要替换为两个破折号,显然,将脚本替换部分中的 \t 替换为 -- 。)

如果您试图概括为“行首的任何两个空格组都应该用破折号替换”,这在 sed 中并非不可能做到。 ,但我更推荐 Perl:
perl -pe 's%^((?:  )+)% "-" x (length($1) / 2)%e' file

这将匹配捕获到 $1 ;内括号表达式匹配两个空格和 +量词表示尽可能多地匹配。 /e flag 允许我们在替换中使用 Perl 代码;这段代码重复了字符 "-"重复捕获的表达式的次数,方便地等于其长度的一半。

关于shell - 用制表符替换所有前 4 个空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38066348/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com