マウスで選択するには長すぎるので、一致する行をLessにコピーしたいのですが、Lessで別の方法がありますか?例えば
ファイル:test.txt内容:
line1: 12312sdfas23414123
liie2: aaaaaxxxxxxxxxxxxxxxxxxxxxxxfsdfsdfasdf
sdfasdfasdfadsfasdfdfdfd........
line3: 134sdgas1212
まず「aaaaa」を検索してから、その行をクリップボードにコピーするにはどうすればよいですか?検索してこれを見つけました。https://stackoverflow.com/questions/26626910/copy-special-line-from-lessしかし、私の要件に適用する方法がわかりません。事前にありがとう
更新:基本的な方法はありますか?私はCentos 6にxclipまたはpbcopyがインストールされていないことがわかったからです。
答え1
less
v
エディタを実行し、ファイル名と現在の行番号を提供するコマンドがあります。以下を使用して実行されるコマンドをオーバーライドできます。
export LESSEDIT='sed -n "%lp" %g | xclip -selection clipboard'
今すぐ入力すると、現在のファイル(%g)の現在の行(%l)を印刷(p)してファイルにパイプするためにv
使用されます。この設定を保存して実行する小さなシェルスクリプト(たとえば)を作成できます。sed
xclip
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
文字列をすばやく見つけることができます。