一致する行を少なくコピーする方法は?

一致する行を少なくコピーする方法は?

マウスで選択するには長すぎるので、一致する行を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

lessvエディタを実行し、ファイル名と現在の行番号を提供するコマンドがあります。以下を使用して実行されるコマンドをオーバーライドできます。

export LESSEDIT='sed -n "%lp" %g | xclip -selection clipboard'

今すぐ入力すると、現在のファイル(%g)の現在の行(%l)を印刷(p)してファイルにパイプするためにv使用されます。この設定を保存して実行する小さなシェルスクリプト(たとえば)を作成できます。sedxclipmylessless

#!/bin/bash
export LESSEDIT='sed -n "%lp" %g | xclip -selection clipboard'
exec less "$@"

chmod +x myless実行可能にしてPATHディレクトリに保存することを忘れないでください。

答え2

送信したリンクに回答がありますが、あなたが見つけた正確な順序を含めることができます。

これを行うコマンドは次のlessとおりです。

  1. /aaaaax <enter>
  2. | <enter>
  3. head -1 | xclip -selection clipboard <enter>

これがこのコマンドが言う/実行です

  1. ページ/画面の上部に配置する「aaaaax」文字列を検索します。
  2. 「チューブ」マーク。enter明確な表示なしで押すと、この画面の内容のみが送信されます。
  3. head -1入力を最初の行に切り捨てます。この場合、私たちはラインが欲しい
  4. xclip -selection clipboardこの行をシステムクリップボードに挿入してどこにでも貼り付けることができます。

答え3

依存する必要がない場合は、less使用することをお勧めしますgrep

フィルタリングされた出力を使用して、grep文字列をすばやく見つけることができます。

関連情報