【问题标题】:Extract values from the specific column after first line [duplicate]从第一行之后的特定列中提取值[重复]
【发布时间】:2022-01-15 00:57:19
【问题描述】:

我正在处理包含> 1000行的日志

# modern trends: tommy hilfinger vs lacoste                        
1:  7ltn-A 46.8  0.4  301   306  100 LOL  TOP: 5C-LIKE PRO;                                        
2:  7m8x-A 46.8  0.3  298   299  100 LOL  TOP: 5C-LIKE PRO;                                        
3:  7l12-A 46.8  0.4  301   305  100 LOL  TOP: 5C-LIKE PRO;                                        
4:  7l10-A 46.8  0.3  299   303  100 LOL  TOP: 5C-LIKE PRO;                                        
5:  7jt7-A 46.8  0.4  301   306  100 LOL  TOP: 5C-LIKE PRO;                                        
6:  7nw2-B 46.8  0.4  301   301  100 LOL  TOP: 5C-LIKE PRO;                                        
7:  7m91-A 46.8  0.3  299   303  100 LOL  TOP: 5C-LIKE PRO; 
...
1000: 4wmd-B 41.4  1.3  298   304   50 LOL  TOP: 5F-SOSO PRO;  

我需要过滤它,只取第二列中的 ID 代码并以类似的格式保存:

7ltn-A
7m8x-A                             
7l12-A                         
7l10-A                               
7jt7-A                                
7nw2-B                                
7m91-A
...
4wmd-B

或者以逗号分隔的一行格式:

  7ltn-A, 7m8x-A, 7l12-A, 7l10-A, 7jt7-A, 7nw2-B, 7m91-A ... , 4wmd-B

我尝试了以下 AWK 解决方案,但它只打印第一行的值

awk '$1=="1:"{printf("%s\n", $2)}' input.log > output.log

【问题讨论】:

  • awk 'NR>1{print $2}' input.log > output.log?
  • $1=="1: 说你只想要第一行。
  • @HotJAMS :grep -v '^#' input.log | cut -d ' ' -f 2 > output.log 不会实现你想要的吗?这也可以可靠地排除文件中间的注释行。
  • 不是完整的副本,也不应该被删除。

标签: bash awk


【解决方案1】:

您想打印从第二行开始的第二列值。

你可以使用

awk 'NR>1{print $2}' input.log > output.log

这里,默认的空白字段分隔符已就位,因为-F 未明确使用。 'NR>1{print $2}' 命令的意思是:

  • NR>1 跳过第一行
  • {print $2} 打印字段 2 的内容。

【讨论】:

    【解决方案2】:

    依赖于忽略 cmets 的替代答案:

    awk '!/^\s*#/ { print $2 }' input.log
    

    还有一个与第一列匹配的模式:

    awk '$1 ~ /^[0-9]+:/ { print $2 }' input.log
    

    这个问题是独一无二的,所以请不要再次删除它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-08
      • 1970-01-01
      • 2021-08-29
      • 2017-11-15
      • 1970-01-01
      • 1970-01-01
      • 2021-05-26
      • 1970-01-01
      相关资源
      最近更新 更多