タグ付けされた質問 「wc」

`wc`ユーティリティは、ファイルまたは標準入力の改行、単語、バイトをカウントします。



17
最小文字数の行を見つける方法
一般的なUNIXコマンドを使用して、シェルスクリプトを作成しています。文字数が最も少ない行(空白を含む)を取得する必要があります。最大で約20行あります。 head -$L | tail -1 | wc -m行Lの文字カウントを見つけるために使用できることを知っています。問題は、それを使用して考えることができる唯一の方法は、ifステートメントの混乱を手動で記述して値を比較することです。 サンプルデータ: seven/7 4for 8 eight? five! 4forその行の文字が最も少ないため、戻ります。 私の場合、複数の行の長さが最も短い場合、単一の行が返されます。最小の長さであれば、どちらを選択してもかまいません。しかし、私は、他の状況にいる他のユーザーに両方の方法を示すことに害はないと思います。


2
なぜトイレはとても遅いのですか?
なぜwcユーティリティはこんなに遅いのですか? 大きなファイルで実行すると、md5sumの約20倍の時間がかかります。 MyDesktop:/tmp$ dd if=/dev/zero bs=1024k count=1024 of=/tmp/bigfile 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 0.687094 s, 1.6 GB/s MyDesktop:/tmp$ time wc /tmp/bigfile 0 0 1073741824 /tmp/bigfile real 0m45.969s user 0m45.424s sys 0m0.424s MyDesktop:/tmp$ time md5sum /tmp/bigfile cd573cfaace07e7949bc0c46028904ff /tmp/bigfile real 0m2.520s user 0m2.196s sys 0m0.316s ファイルがヌルでいっぱいになっていることによる単なる奇妙なエッジ状態ではなく、ファイルがランダムデータで満たされていたり、テキストファイルであっても、パフォーマンスに同じ違いが見られます。 …
17 performance  wc 



4
`wc -l`で1行の合計を取得するにはどうすればよいですか?
履歴内の特定のファイルの行数を示すためにgitエイリアスを追加しました: [alias] lines = !lc() { git ls-files -z ${1} | xargs -0 wc -l; }; lc ただし、wc -l複数の合計を報告しているため、10万行を超える行がある場合は、それらの合計を報告してから先に進みます。次に例を示します。 <100k行(望ましい出力) $ git lines \*.xslt 46 packages/NUnit-2.5.10.11092/doc/files/Summary.xslt 232 packages/NUnit-2.5.10.11092/samples/csharp/_UpgradeReport_Files/UpgradeReport.xslt 278 total > 100k行(にパイプする必要がありましたgrep "total") $ git lines \*.cs | grep "total" 123569 total 107700 total 134796 total 111411 total 44600 total …
12 files  xargs  wc 


2
なぜwc -mとwc -cが異なるのですか?
Cプログラマーとして、wc -c(バイト数を数える)とwc -m(文字数を数える)が私の長いテキストファイルに対して非常に異なる結果を出力するのを見て驚いた。いつもsizeof(char)1バイトだと言われていました。 qdii@nomada ~/Documents $ wc -c sentences.csv 102990983 sentences.csv qdii@nomada ~/Documents $ wc -m sentences.csv 89023123 sentences.csv 説明はありますか?

2
wc <<<“ $ string”がprintf“ $ string”よりも1バイト長い長さを表示するのはなぜですか| トイレ?
偶然にも、wcそれがbashから入力を取得する方法に応じてカウントが異なることがわかりました。 $ s='hello' $ wc -m &lt;&lt;&lt;"$s" 6 $ wc -c &lt;&lt;&lt;"$s" 6 $ printf '%s' "$s" | wc -m 5 $ printf '%s' "$s" | wc -c 5 これは-私見が混乱する-どこかに文書化された行動ですか?wcここで何を数えますか?これは想定される改行ですか?



7
複数行のレコードを分割せずに大きなテキストファイルを効率的に分割する方法
私は大きなテキストファイルを持っています(gzしたとき〜50Gb)。ファイルには4*N行またはNレコードが含まれています。つまり、すべてのレコードは4行で構成されます。このファイルを、入力ファイルのおよそ25%のサイズの4つの小さなファイルに分割したいと思います。ファイルをレコード境界で分割するにはどうすればよいですか? 素朴なアプローチはzcat file | wc -l、行数を取得し、その数を4で除算してからを使用することsplit -l &lt;number&gt; fileです。ただし、これはファイルを2回超えるため、行カウントは非常に遅くなります(36分)。もっと良い方法はありますか? これは近いですが、私が探しているものではありません。受け入れられた回答も行数をカウントします。 編集: このファイルには、fastq形式のシーケンスデータが含まれています。2つのレコードは次のようになります(匿名化)。 @NxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxGCGA+ATAGAGAG xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxTTTATGTTTTTAATTAATTCTGTTTCCTCAGATTGATGATGAAGTTxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + AAAAA#FFFFFFFFFFFFAFFFFF#FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF&lt;AFFFFFFFFFFAFFFFFFFFFFFFFFFFFFF&lt;FFFFFFFFFAFFFAFFAFFAFFFFFFFFAFFFFFFAAFFF&lt;FAFAFFFFA @NxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxGCGA+ATAGAGAG xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxCCCTCTGCTGGAACTGACACGCAGACATTCAGCGGCTCCGCCGCCxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + AAAAA#FFFFF7FFFFFFAFFFFA#F7FFFFFFFFF7FFFFFAF&lt;FFFFFFFFFFFFFFAFFF.F.FFFFF.FAFFF.FFFFFFFFFFFFFF.)F.FFA))FFF7)F7F&lt;.FFFF.FFF7FF&lt;.FFA&lt;7FA.&lt;.7FF.FFFAFF 各レコードの最初の行はで始まり@ます。 EDIT2: zcat file &gt; /dev/null 31分かかります。 EDIT3: 最初の行のみがで始まり@ます。他の誰もこれまでしません。こちらをご覧ください。レコードは整理された状態である必要があります。結果のファイルに何かを追加することはできません。

3
差分出力で正しい行数を取得する
diff(具体的には-yおよび--suppress-common-linesオプション)の出力で正しい行数を取得したいと思います。シンプルファイルを使用wc -lしても機能しません。両方のファイルが改行なしで終了し、最終行が異なる場合、最終行はwc -lカウントされません。 これを回避するためのシンプルで効率的なソリューションはありますか? たとえば、ファイル "a"がある場合: a b c d #no newline here そして「b」: a b c D #no newline here 出力は次のとおりです。 $ diff -y --suppress-common-lines a b | wc -l 0 は行を出力するため、これは明らかに正しくありdiff ません。
8 diff  wc 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.