Cat 命令的问题

Cat 命令的问题

我正在寻找文本文件中的段落编号,我很确定我必须使用该命令cat -n,或者cat -b但我不确定如何使用它,有人可以对此进行扩展吗?

答案1

cat -n file.txt将显示 file.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这不是一个非常合适的工具。

正如我在评论中所说,您的问题定义不明确,因为您没有指定命令应该如何识别段落。一种方法是缩进第一行。 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,

相关内容