Sat*_*ish 1 regex linux awk sed
如何使用sed/awk工具复制一些片段并粘贴到同一文件中?
示例:文件名foo.txt具有以下文本我想要复制并粘贴到同一文本下面
ABC
DEF
GHI
JKL
MNO
PQR
Run Code Online (Sandbox Code Playgroud)
最终输出就像.
ABC
DEF
GHI
JKL
MNO
PQR
ABC
DEF
GHI
JKL
MNO
PQR
Run Code Online (Sandbox Code Playgroud)
OP要求sed,所以在这里!
可能有很多方法可以实现它,但这是我所知道的:
sed 'H;$G' foo.txt
Run Code Online (Sandbox Code Playgroud)
H:将当前文件附加到保持缓冲区;:分开两个表达式$:文件结束时G:打印保持缓冲区永远不要忘记那ed是标准文本编辑器(花了我一些时间来记住如何使用它,它不是我必须说的明亮).
例如,假设它位于一个名为的文件中foo.ed(您可以在交互式会话中执行相同操作):
$a
.
,t$
$d
wq
Run Code Online (Sandbox Code Playgroud)
然后用它:
ed foo.txt < foo.ed
Run Code Online (Sandbox Code Playgroud)
单行不可读的基础:
ed foo.txt <<< $'$a\n\n.\n,t$\n$d\nwq'
Run Code Online (Sandbox Code Playgroud)
翻译:
$a:在文件的末尾插入所有内容(此处有一个新行),直到单点 .,t$:将整个文件内容复制到最后$d:删除最后一行,因为我不记得如何复制到文件结尾之前的行!@#wq:写和退出参考文献: