Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 在文本文件中创建包含行号的最后一列_Bash_Macos_Awk_Sed_Terminal - Fatal编程技术网

Bash 在文本文件中创建包含行号的最后一列

Bash 在文本文件中创建包含行号的最后一列,bash,macos,awk,sed,terminal,Bash,Macos,Awk,Sed,Terminal,我不熟悉使用Mac终端。我需要将一个制表符分隔的列添加到包含3个现有列的文本文件中。这些列看起来非常像这样: org1 1-20 1-40 org2 3-35 6-68 org3 16-38 40-16 org1 1-20 1-40 1 org2 3-35 6-68 2 org3 16-38 40-16 3 等等 我需要它们看起来像这样: org1 1-20 1

我不熟悉使用Mac终端。我需要将一个制表符分隔的列添加到包含3个现有列的文本文件中。这些列看起来非常像这样:

org1     1-20     1-40
org2     3-35     6-68
org3     16-38    40-16
org1     1-20     1-40     1
org2     3-35     6-68     2
org3     16-38    40-16     3
等等

我需要它们看起来像这样:

org1     1-20     1-40
org2     3-35     6-68
org3     16-38    40-16
org1     1-20     1-40     1
org2     3-35     6-68     2
org3     16-38    40-16     3
等等


如果这个问题已经被讨论过,我深表歉意。类似问题的答案有时非常深奥,不容易翻译成这种特定情况。

在awk中<代码>打印记录及其后所需的制表符和行数:

$ awk '{print $0 "\t" NR }' foo
org1     1-20     1-40  1
org2     3-35     6-68  2
org3     16-38    40-16 3

在awk中<代码>打印记录及其后所需的制表符和行数:

$ awk '{print $0 "\t" NR }' foo
org1     1-20     1-40  1
org2     3-35     6-68  2
org3     16-38    40-16 3
您可以在同一文件旁边添加行号()的文件,并删除所有其他列():

$paste infle您可以在同一文件旁边添加行号(),并删除所有其他列():


$paste infle如果要将行号添加到最后一列:

perl -i -npe 's/$/"\t$."/e' file
在哪里

  • -i
    以速度替换文件(如果要将结果打印到标准输出,请删除)
  • -n
    使Perl对文件中的每一行应用替换,就像sed一样
  • -p
    打印表达式的结果
  • -e
    接受Perl表达式
  • s/../../e
    将第一部分替换为第二部分(用斜杠分隔),并且
    e
    标志使Perl将替换计算为Perl表达式
  • $
    是线锚的末端
  • $。
    变量保留当前行的编号

换句话说,该命令将行尾(
$
)替换为一个选项卡,后跟行号
$。

如果要将行号添加到最后一列:

perl -i -npe 's/$/"\t$."/e' file
在哪里

  • -i
    以速度替换文件(如果要将结果打印到标准输出,请删除)
  • -n
    使Perl对文件中的每一行应用替换,就像sed一样
  • -p
    打印表达式的结果
  • -e
    接受Perl表达式
  • s/../../e
    将第一部分替换为第二部分(用斜杠分隔),并且
    e
    标志使Perl将替换计算为Perl表达式
  • $
    是线锚的末端
  • $。
    变量保留当前行的编号

换句话说,该命令用一个制表符替换行尾(
$
),该制表符后跟行号
$。

是否将行号放在最后一列,还是其他内容?在最后一列中,是:)是否要将行号放在最后一列或其他内容中?在最后一列中,选择“是”。)非常感谢你!作为将来的参考,你知道在每个数字前打印一个单词的方法吗?e、 g.“行1、行2、行3等”?只需将
“\t”
替换为
“\t行”
(未测试)。非常感谢!作为将来的参考,你知道在每个数字前打印一个单词的方法吗?e、 g.“第1行、第2行、第3行等”?只需将
“\t”
替换为
“\t-line”
(未测试)。