我想在less中复制太长的匹配行,无法用鼠标选择,那么less中是否存在另一种方法?例如
文件:test.txt 内容为:
line1: 12312sdfas23414123
liie2: aaaaaxxxxxxxxxxxxxxxxxxxxxxxfsdfsdfasdf
sdfasdfasdfadsfasdfdfdfd........
line3: 134sdgas1212
我将首先搜索“aaaaa”,然后如何将该行复制到剪贴板?经过搜索,我发现了这个https://stackoverflow.com/questions/26626910/copy-specific-line-from-less,但我不知道如何将其应用于我的要求。提前致谢
更新:有一些本地方法吗?因为我发现我的Centos 6没有安装xclip或pbcopy。
答案1
less
有一个v
命令将运行编辑器并为其提供文件名和当前行号。您可以使用以下命令覆盖它运行的命令:
export LESSEDIT='sed -n "%lp" %g | xclip -selection clipboard'
现在,当您键入 时v
,它将用于sed
打印 (p) 当前文件 (%g) 中的当前行 (%l),并将其通过管道传输到 中xclip
。您可以编写一个小型 shell 脚本(例如myless
)来保存此设置并less
为您运行:
#!/bin/bash
export LESSEDIT='sed -n "%lp" %g | xclip -selection clipboard'
exec less "$@"
不要忘记chmod +x myless
使其可执行,并将其放在 PATH 目录中的某个位置。
答案2
您发送的链接有答案,但我可以包含您可能正在寻找的确切序列:
执行此操作的命令less
是:
/aaaaax <enter>
| <enter>
head -1 | xclip -selection clipboard <enter>
这就是这些命令所说/所做的
- 搜索字符串“aaaaax”,该字符串会将其放置在页面/屏幕的顶部
- “管”标记。
enter
在没有明确标记的情况下按下只会传输此屏幕的内容 head -1
将输入修剪为仅第一行。在这种情况下我们想要的线xclip -selection clipboard
将该行放在系统剪贴板上,您可以将其粘贴到任何地方
答案3
如果您不必依赖,less
我建议使用grep
.
您可以使用 过滤输出,grep
并且可以更快地找到您的字符串。