在终端的文本文件的标准输出中添加行号

关于添加行

在下一篇文章中,我们将看到一些方法 在文本文件中添加行号 我们从 终端。 如果您曾经想过如何将这些行号添加到Gnu / Linux文本文件的标准输出中,那么这篇简短的文章将尝试解释执行此操作的不同方法。

有几种方法可以将行号添加到文本文件中。 接下来,我们将看到6种不同的方法来做到这一点。 我想,除了您将在下面看到的方法之外,还有其他一些方法,但是从头开始,这些方法就足够了。

将行号添加到标准文本文件输出中

首先,我们将创建一个名为 file.txt。 在其中,我将添加几行内容以进行标识。 要查看我刚刚创建的文件的内容,我们将打开终端(Ctrl + Alt + T)并输入以下内容:

猫线

cat archivo.txt

使用nl命令

从cat命令的输出可以看出,该文件有10行,其中三行为空。 我们将使用 nl命令。 为此,请运行:

nl行

nl archivo.txt

从上一次捕获中可以看出, nl命令忽略空行。 只需将数字添加到非空白行即可。 如果你想 编号所有行,包括空白行,运行:

nl -ba线

nl -b a archivo.txt

此外,为了更清晰地阅读结果,我们可以 在数字后添加符号。 例如,要在数字后添加句点,请运行:

nl -s点线

nl -s "." archivo.txt

你可能希望 对齐输出宽度。 为此,请使用 -w选项具有可变值 如下所示:

nl w3线

nl -w3 archivo.txt

使用cat命令

cat命令用于显示文件的内容,如本文的第一个屏幕截图所示。 如果要在文件输出中添加数字, 使用-n 如下所示:

猫-n线

cat -n archivo.txt

您可能感兴趣 将标准输出传递到新文件。 为此,只需运行如下所示的命令:

cat -n archivo.txt > nuevoarchivo.txt

使用awk命令

这也许是获得结果的最复杂的方法。 添加 行号使用awk命令输出到文件, 跑:

awk线

awk 'BEGIN{i=1} /.*/{printf "%d.% s\n",i,$0; i++}' archivo.txt

如您所见,我已经分配了 起始编号在BEGIN参数中为1。 我们可以分配您选择的任何其他初始编号,例如5,如下所示:

awk开始于5

awk 'BEGIN{i=5} /.*/{printf "%d.% s\n",i,$0; i++}' archivo.txt

使用以下命令 如果您不想考虑空白行:

awk没有空行

awk 'BEGIN{i=0} {if($0 !~ /^$/) {printf ("%d.%s \n",i,$0); i++} else { print $0} } ' archivo.txt

如果您认为上面的命令有点难记,请使用以下命令,它将为您带来与AWK命令显示的第一个命令相同的结果:

awk fnr

awk '{ print FNR " " $0 }' archivo.txt

使用sed命令

要添加 使用sed命令到文件标准输出的行号, 跑:

sed线

sed '/./=' archivo.txt | sed '/./N; s/\n/ /'

sed命令具有很酷的功能。 能 显示文件中的特定行。 例如,要显示文件的第七行,请运行:

sed混凝土生产线

sed -n 7p archivo.txt

使用less命令

使用更少的数字将数字附加到文件的标准输出中, 跑:

小于-n

less -N archivo.txt

使用grep命令

grep命令可用于搜索包含特定文本的行。 如果你希望 将行号添加到包含搜索文本的行中, 跑:

grep -n

grep -n "línea" archivo.txt

请记住,此命令只会将数字添加到包含搜索字符串的行中。 另外,如屏幕截图所示,它为搜索到的文本着色。 给定文件中的所有其他内容都将被跳过。

就这样,即使我不得不说 这些命令还有其他可以补充或扩展的选项 本文中已描述的内容。 有关此处已命名的命令的更多信息,您可以查阅 手册页.


3条评论,留下您的评论

发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   没有人

    在awk命令中,您不需要搜索正则表达式“ /.*/”
    默认情况下,它已经将文件分为几行,而$ 0包含该行,因此

    awk'BEGIN {i = 1} {printf“%03d:%s \ n”,i,$ 0; 我++}'file.txt

    工作相同(更好)

    awk'BEGIN {i = 1} /.*/[printf“%d。%s \ n”,i,$ 0; 我++}'file.txt

  2.   米格尔·昆塔纳

    杰出贡献! 非常感谢!

  3.   罗德里戈·卢娜(Rodrigo Luna)

    在开始友好的问候之前。

    我的以下脚本有问题。

    从文件中获取与搜索匹配的行信息,并将其存储在变量中。
    例如:
    值=`awk -F«:»'{print $ 1»»$ 2»»$ 3}'hociporky | grep“ 201025” -n`

    然后,您遍历该变量,然后在文件中查找特定行。
    例如:
    以$值表示的价值; 做
    sed -n“ $ {value} p”文件
    完成

    但这会发送一个错误
    sed:-e表达式#1,字符1:未知命令:

    有人可以向我解释为什么以及如何解决吗?