如何在每一行的末尾附加行本身

6 sed awk

这是在file.txt

redcar
bluecar
greencar
Run Code Online (Sandbox Code Playgroud)

我正在寻找使它成为的方法:

redcar redcar
bluecar bluecar
greencar greencar
Run Code Online (Sandbox Code Playgroud)

我尝试了很多方法都sed没有运气

Hai*_* Vu 12

这是使用粘贴的简单解决方案:

paste -d ' ' file.txt file.txt
Run Code Online (Sandbox Code Playgroud)

  • @fred 这并不奇怪。与作为解释器的 sed 或 awk 不同,诸如“paste”之类的专用工具已针对其特定任务优化了代码。你付出的代价是一个专门的工具只能做一项工作。 (2认同)

小智 11

尝试:

sed 's/\(.*\)/\1 \1/' data.txt
Run Code Online (Sandbox Code Playgroud)

  • 你也可以使用 `\0` 来匹配整个表达式,所以 `s/.*/\0 \0/` (8认同)
  • 或`&`(也是整个匹配部分) (5认同)
  • @迈克尔:可以吗?哦,这是一个 GNU 扩展。不在 POSIX 或 OpenBSD 中。相当无意义的扩展,因为有`&`。 (2认同)

nin*_*alj 7

有不止一种方法可以做到:

替换完整句子的两倍:

sed 's/.*/& &/'
Run Code Online (Sandbox Code Playgroud)

复制以保留空间,将保留空间附加到模式空间,修复换行符:

sed 'h;G;s/\n/ /'
Run Code Online (Sandbox Code Playgroud)

awk,使用字段分隔符连接整个句子:

awk '$0=$0FS$0'
Run Code Online (Sandbox Code Playgroud)