
現在、Windows XP で gVim を使用していますが、私の中心的な質問に対して 2 つのフォローアップがあります。
最も多くの文字数を持つ行を見つける最良の方法は何ですか?
私の現在の方法:私は正規表現検索:/^\(\p\)\{#number#,}$
) を使用し、一致するものが 1 つだけになるまで整数を増やし続けます#number#
。私のファイルの場合、行の長さは 81K 文字だけで、以前考えていた 916,657 文字ではありません。カーソルがその行にあるときに を押すとg + Ctrl+g
、列数が 81K と表示されるので、このことがわかります。
フォローアップ1)質問は"What is the best method of finding the line with the most columns?"
上記の2番と同じですか?
フォローアップ2)ファイルを開いて画面の下部に次の行が表示された場合、2 番目の数字は何を意味しますか。
これは、ファイルには 14,871 行あり、少なくとも 1 行に 916,657 列があるという意味だと解釈しています。ファイルに 14,871 行あることを確認しましたが、2 番目 (916K) の目的を理解できませんでした。
答え1
答え2
もっと良い方法があるはずですが、次の方法も有効です。
%s/./a/g "Replace everything with 'a's
sort! "Sort by column length
ggy$ "Go to first line (longest) and copy it
u "Undo the sorting
/<c-r>" "Search for the longest line
mm "Mark it 'm'
u "Undo the replace
'm "Go to the mark - there!
答え3
最初の質問にはお答えできませんが、ファイル読み込みメッセージの 2 番目の数字は、ファイル内の文字の合計数です。
答え4
それほど vim 中心ではなく、他の回答と似ていますが、人によってはより直感的かもしれません。これは、vim 内から外部プログラムを呼び出すことに問題がないことを前提としています。
ファイルには次のものがありますtest_file
:
hello world
helloooooooooooooo world !!!
yo, world!
helloooOoooOooooOo World ! !
コマンドには、最長行のサイズを出力するオプションwc
がある場合があります。これは私の例の出力です。-L
28 test_file
これらの 28 文字の行 (およびその行番号) は、 で印刷できますgrep -nP ".{28}" test_file
。
2:helloooooooooooooo world !!!
4:helloooOoooOooooOo World ! !
wc
出力は で解析できますcut
。すべてをまとめて、1 つのコマンドを別のコマンドにつなげると、次のようになります。
grep -nP ".{$(wc -L test_file | cut -f 1 -d ' ')}" test_file