Catコマンドに関する問題[閉じる]

Catコマンドに関する問題[閉じる]

テキストファイルで段落番号を探しています。そのコマンドを使用する必要があると確信しています。cat -nそれとも、cat -bどのように使用するのかよくわかりません。誰でもこれを拡張できますか?

答え1

cat -n file.txtfile.txt の内容が行番号とともに表示されます。
ファイルに行番号を含めるには、I / Oリダイレクトを使用できます
cat -n file.txt > file1.txt。たとえば、
段落に番号を付けるオプションはありません。

答え2

Grepはファイルに空白行がいくつあるかを知らせることができます。これは通常、段落の数より1が少なくなります。テキストに追加の空行がない限り。

grep -c '^$' file.txt | wc -l

また、空でない行がいくつあるかを知らせることもできます。段落がすべて改行なしで連続的に作成された場合、これが効果があると思います。

grep -cv '^$' a | wc -l

答え3

他の答えが示すように、catこれは非常に適切なツールではありません。

私がコメントしたように、コマンドが段落を識別する方法を指定していないため、あなたの質問は正しく定義されていません。 1つの方法は、最初の行をインデントすることです。 nl -bp"^ "次の形式の入力を処理するのに適したコマンドです。

$ cat text1
Some Verse
 The quick brown fox
jumps over the lazy dog.
 The Owl and the Pussy-cat went to sea
In a beautiful pea green boat,

$ nl -bp"^ " text1
       Some Verse
     1   The quick brown fox
       jumps over the lazy dog.
     2   The Owl and the Pussy-cat went to sea
       In a beautiful pea green boat,

別の方法は、空行を区切り文字として使用することです。 awkこのようなことを扱うのはとても上手です。

$ cat num_pp
#!/bin/sh
awk 'BEGIN    {start=1}
     /^$/     {start=1}
    {
        if ($0 != ""  &&  start) {
                print ++ppnum, $0
                start=0
        } else print
    }' "$@"

$ cat text2
Some Verse
 The quick brown fox
jumps over the lazy dog.

The Owl and the Pussy-cat went to sea
 In a beautiful pea green boat,

$ ./num_pp text2
1 Some Verse
 The quick brown fox
jumps over the lazy dog.

2 The Owl and the Pussy-cat went to sea
 In a beautiful pea green boat,

関連情報