BASH 从终端复制特定行

Posted

技术标签:

【中文标题】BASH 从终端复制特定行【英文标题】:BASH copy specific lines from terminal 【发布时间】:2019-01-07 14:23:47 【问题描述】:

假设目前我的终端如下所示:

neekoy@mypc:~/some/folder$ echo "lala nana"
lala nana
neekoy@mypc:~/some/folder$ l
entrypoint.js  helpers/  node_modules/  package.json  package-lock.json
neekoy@mypc:~/some/folder$

我想复制底部的第四行(包含“lala nana”的那一行)。

我显然可以编写一个脚本,使用 tput 保存光标位置,将光标位置切换到特定行,复制它,然后返回到之前的光标位置。

是否有现成的解决方案或更简单的方法来实现这一点?

【问题讨论】:

相关:***.com/questions/5130968/… 嗯不是真的。我已经使用 xclip,但我想做的是复制标准输出中的一行,而不是从文件或命令中复制。 它是相关的,根本不是重复的。我明白你的问题。 哦,是的,我误解了你的评论:) 如果您想执行这样的操作,您可能需要执行bash | tee bash_output.log,然后使用awk 提取您想要的行。 【参考方案1】:

我不确定我是否理解您的问题。不过我会这样解决。

我会将命令放入一个变量中,以便稍后再次访问它。 (http://www.tldp.org/LDP/abs/html/varassignment.html)

这是一个例子:

neekoy@mypc:~/some/folder$ c=$(echo "lala nana")
neekoy@mypc:~/some/folder$ echo $c
lala nana

或者像你的例子:

neekoy@mypc:~/some/folder$ echo "lala nana"
lala nana
neekoy@mypc:~/some/folder$ l
entrypoint.js  helpers/  node_modules/  package.json  package-lock.json

neekoy@mypc:~/some/folder$ c=$(!-2) #related to https://unix.stackexchange.com/a/33552
neekoy@mypc:~/some/folder$ echo $c
lala nana

或者将输出保存为文件中的文本。

neekoy@mypc:~/some/folder$ echo "lala nana"
lala nana
neekoy@mypc:~/some/folder$ l
entrypoint.js  helpers/  node_modules/  package.json  package-lock.json

neekoy@mypc:~/some/folder$ !-2 > test.txt
echo "lala nana" > test.txt
neekoy@mypc:~/some/folder$ cat test.txt
lala nana

【讨论】:

虽然这是个好主意,但现在想象一下,您希望输出 1 小时的持久 cmd。

以上是关于BASH 从终端复制特定行的主要内容,如果未能解决你的问题,请参考以下文章

如何复制或删除bash中的特定行并将它们创建到新文件中[重复]

如何在 Linux 中使用终端命令将文件参数传递给我的 bash 脚本? [复制]

如何从终端附加到 /etc/hosts 文件? [复制]

guake终端复制标签页

linux 复制一段指令到终端命令行。怎么做。如,我从网上找了一段指令,想直接把它粘贴在命令行里。

将本地文件从 Mac 复制到终端中的 ssh 会话 [关闭]