在下一篇文章中,我们将看到一些方法 在文本文件中添加行号 我们从 终端。 如果您曾经想过如何将这些行号添加到Gnu / Linux文本文件的标准输出中,那么这篇简短的文章将尝试解释执行此操作的不同方法。
有几种方法可以将行号添加到文本文件中。 接下来,我们将看到6种不同的方法来做到这一点。 我想,除了您将在下面看到的方法之外,还有其他一些方法,但是从头开始,这些方法就足够了。
将行号添加到标准文本文件输出中
首先,我们将创建一个名为 file.txt。 在其中,我将添加几行内容以进行标识。 要查看我刚刚创建的文件的内容,我们将打开终端(Ctrl + Alt + T)并输入以下内容:
cat archivo.txt
使用nl命令
从cat命令的输出可以看出,该文件有10行,其中三行为空。 我们将使用 nl命令。 为此,请运行:
nl archivo.txt
从上一次捕获中可以看出, nl命令忽略空行。 只需将数字添加到非空白行即可。 如果你想 编号所有行,包括空白行,运行:
nl -b a archivo.txt
此外,为了更清晰地阅读结果,我们可以 在数字后添加符号。 例如,要在数字后添加句点,请运行:
nl -s "." archivo.txt
你可能希望 对齐输出宽度。 为此,请使用 -w选项具有可变值 如下所示:
nl -w3 archivo.txt
使用cat命令
cat命令用于显示文件的内容,如本文的第一个屏幕截图所示。 如果要在文件输出中添加数字, 使用-n 如下所示:
cat -n archivo.txt
您可能感兴趣 将标准输出传递到新文件。 为此,只需运行如下所示的命令:
cat -n archivo.txt > nuevoarchivo.txt
使用awk命令
这也许是获得结果的最复杂的方法。 添加 行号使用awk命令输出到文件, 跑:
awk 'BEGIN{i=1} /.*/{printf "%d.% s\n",i,$0; i++}' archivo.txt
如您所见,我已经分配了 起始编号在BEGIN参数中为1。 我们可以分配您选择的任何其他初始编号,例如5,如下所示:
awk 'BEGIN{i=5} /.*/{printf "%d.% s\n",i,$0; i++}' archivo.txt
使用以下命令 如果您不想考虑空白行:
awk 'BEGIN{i=0} {if($0 !~ /^$/) {printf ("%d.%s \n",i,$0); i++} else { print $0} } ' archivo.txt
如果您认为上面的命令有点难记,请使用以下命令,它将为您带来与AWK命令显示的第一个命令相同的结果:
awk '{ print FNR " " $0 }' archivo.txt
使用sed命令
要添加 使用sed命令到文件标准输出的行号, 跑:
sed '/./=' archivo.txt | sed '/./N; s/\n/ /'
sed命令具有很酷的功能。 能 显示文件中的特定行。 例如,要显示文件的第七行,请运行:
sed -n 7p archivo.txt
使用less命令
至 使用更少的数字将数字附加到文件的标准输出中, 跑:
less -N archivo.txt
使用grep命令
grep命令可用于搜索包含特定文本的行。 如果你希望 将行号添加到包含搜索文本的行中, 跑:
grep -n "línea" archivo.txt
请记住,此命令只会将数字添加到包含搜索字符串的行中。 另外,如屏幕截图所示,它为搜索到的文本着色。 给定文件中的所有其他内容都将被跳过。
就这样,即使我不得不说 这些命令还有其他可以补充或扩展的选项 本文中已描述的内容。 有关此处已命名的命令的更多信息,您可以查阅 手册页.
3条评论,留下您的评论
在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
杰出贡献! 非常感谢!
在开始友好的问候之前。
我的以下脚本有问题。
从文件中获取与搜索匹配的行信息,并将其存储在变量中。
例如:
值=`awk -F«:»'{print $ 1»»$ 2»»$ 3}'hociporky | grep“ 201025” -n`
然后,您遍历该变量,然后在文件中查找特定行。
例如:
以$值表示的价值; 做
sed -n“ $ {value} p”文件
完成
但这会发送一个错误
sed:-e表达式#1,字符1:未知命令:
有人可以向我解释为什么以及如何解决吗?