我有一个包含以下内容的文件:
aaaabbaaabbaa
我需要这样的输出:
aaaa
bbaaa
bbaa
我需要在第一次出现 'b'
之前添加一个新行。我只需要在 bash 中使用 SED 命令
我正在使用以下命令。我知道它现在是完美的..
谁能告诉我比这更好的命令。 请注意我只需要在 bash 中使用 SED 命令
sed -i.bak -e 's/bb/qbb/g' input.txt
sed -i.bak -e 's/qbb/\'$'\nbb/g' input.txt
最佳答案
使用sed
:
$ echo "aaaabbaaabbaa" | sed -r 's/([b]+)/\n\1/g'
aaaa
bbaaa
bbaa
sed -r
允许使用 ()
捕获 block 并使用 \1
打印它们。它捕获 [b]+
的 block ,意思是 “一个或多个 b's”
,并在换行之前将其打印回来。
我看到您正在使用 sed -i
,这样做也很好:
sed -i.bak -r 's/([b]+)/\n\1/g' input.txt
此外,更容易 ( thanks Glenn Jackman !)
$ echo "aaaabbaaabbaa" | sed 's/b\+/\n&/g'
aaaa
bbaaa
bbaa
它替换所有的“b”序列,并用一个换行符替换它,后跟相同的“b”序列(&
代表 s 左侧匹配的任何内容///
).
关于bash - 如何在模式 "Using SED"之前插入字符串或换行符(不替换模式)在 MAC OS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19589970/