sed 将上一行的第一个单词添加到下一行的开头,如果

0 sed awk regular-expression replace text-formatting

我遇到了一个问题,无法找到解决以下问题的解决方案。

如果它们以特殊字符开头,我想将一行的第一个单词复制到以下 n 行的开头,否则复制新单词。

输入:

aaa random words

`dsf

|df

bbb

|d
Run Code Online (Sandbox Code Playgroud)

输出:

aaa random words

aaa`dsf

aaa|df

bbb

bbb|d
Run Code Online (Sandbox Code Playgroud)

小智 5

一个 awk oneliner:

awk '/^[[:alnum:]]/ {prefix = $1; print; next} {print prefix $0}' input
Run Code Online (Sandbox Code Playgroud)
  • 在以字母数字字符开头的行上,将第一个单词存储在 中prefix,打印该行并继续到下一行。
  • 在所有其他行上打印prefix在该行之前。