awk:用逗号分隔的打印行号

awk:用逗号分隔的打印行号,awk,gawk,Awk,Gawk,我希望它如下所示: line1: 2 line1: 3 line1: 5 line2: 1 line2: 2 line3: 10 如何实现它?使用gawk的。一旦我破解了它,我会提供实际的代码 line1: 2, 3, 5 line2: 1, 2 lin23: 10 awk'{for(i=1;i使用perl awk '{for (i = 1; i <= NF; i++) { gsub(/[^[:alnum:]]/, " "); arr[tolower($i)] = a

我希望它如下所示:

line1: 2
line1: 3
line1: 5
line2: 1
line2: 2
line3: 10
如何实现它?

使用gawk的。一旦我破解了它,我会提供实际的代码

line1: 2, 3, 5
line2: 1, 2
lin23: 10
awk'{for(i=1;i使用perl

awk '{for (i = 1; i <= NF; i++) {
    gsub(/[^[:alnum:]]/, " "); 
    arr[tolower($i)] = arr[tolower($i)]NR", "}
  } 
  END {
    for (x in arr) {
      print x": "substr(arr[x], 1, length(arr[x])-2);
  }}' input.txt | sort
!/usr/bin/perl
while(){
如果(/(\w+):\s*(\d+/){提取零件
$arr{lc($1)}{$2}++#数一数
};    
}
对于我的$k(排序键%arr){#打印排序的alpha
打印“$k:”;
$lines=$arr{$k};
打印联接(“,”,(排序{$a$b}键%$lines)),“\n”;按数字排序打印
}

此解决方案删除ans并对重复的数字进行排序。这是您需要的吗?

er,除非我遗漏了一些内容,否则该解决方案似乎不会运行……您可以检查大括号是否位于正确的位置吗?编辑了该命令。它在输入文件中列出了唯一的单词以及单词出现的行号。我想列出每个单词,然后是以逗号分隔的行号。input.txt中有什么?@glenn jackman,任何东西。脚本应该列出一行中的所有单词以及以逗号分隔的行号。听着,我们免费为您提供时间。如果您不愿意提供最小的努力来显示您的输入,您就是在浪费我们所有的时间。如果我删除NR fr在print命令中,我得到正确排序的唯一单词。如何添加这些单词出现的行号的逗号分隔列表?例如,如果“Word1”出现在第2、4、6行,我希望输出为:
word1:2、4、6
。我不知道如何按照您的建议使用数组来实现这一点。我不知道不使用数组的方法,尽管可能有一种。太棒了!!!我现在正试图找到避免重复行号的方法。非常感谢!我是仍在努力纠正重复的数字。如果你能帮忙,那就太好了。嗯,我看看能想出什么办法。
awk '{for (i = 1; i <= NF; i++) {
    gsub(/[^[:alnum:]]/, " "); 
    arr[tolower($i)] = arr[tolower($i)]NR", "}
  } 
  END {
    for (x in arr) {
      print x": "substr(arr[x], 1, length(arr[x])-2);
  }}' input.txt | sort
#!/usr/bin/perl

while(<>){
  if( /(\w+):\s*(\d+)/){       # extract the parts
     $arr{lc($1)}{$2} ++       # count them
  };    
}

for my $k (sort keys %arr){    # print sorted alpha
  print "$k: ";
  $lines=$arr{$k};
  print join(", ",(sort {$a<=>$b} keys %$lines)),"\n";  print sorted numerically
}