我需要一些帮助,以使用sed命令从文件中删除所有驱动程序名称。我尝试了多个不同的命令,但无法正常运行。
输入:
Rank Country Driver Races Wins
1 [United_Kingdom] Lewis_Hamilton 264 94
2 [Germany] Sebastian_Vettel 254 53
3 [Spain] Fernando_Alonso 311 32
4 [Finland] Kimi_Raikkonen 326 21
5 [Germany] Nico_Rosberg 200 23
我试过使用,cat f1.txt| sed -r 's/\S+//3'
但无法保持我想要的格式
我想要它做什么
输入:
Rank Country Driver Races Wins
1 [United_Kingdom] 264 94
2 [Germany] 254 53
3 [Spain] 311 32
4 [Finland] 326 21
5 [Germany] 200 23
最简单的方法就是$3
用等于字段长度的空格代替,例如
awk 'FNR > 1{s=sprintf("%*s", length($3) + 1, " "); sub($3,s)}1' drivers
该条件FNR > 1
仅跳过文件的第一行以保留所有标题。+1
已添加到第三个字段的长度,以匹配您的确切输出格式。
使用/输出示例
$ awk 'FNR > 1{s=sprintf("%*s", length($3) + 1, " "); sub($3,s)}1' drivers
Rank Country Driver Races Wins
1 [United_Kingdom] 264 94
2 [Germany] 254 53
3 [Spain] 311 32
4 [Finland] 326 21
5 [Germany] 200 23
注意:如果输入文件实际上包含"Input:"
在开头,则可以使用:
awk 'NF == 5 && $1 ~ /^[0-9]/ {s=sprintf("%*s", length($3)+1, " "); sub($3,s)}1' drivers
这里的条件'NF == 5 && $1 ~ /^[0-9]/
仅适用于以数字开头的具有五个字段的记录(行)。
输出量
$ awk 'NF == 5 && $1 ~ /^[0-9]/ {s=sprintf("%*s", length($3)+1, " "); sub($3,s)}1' drivers
Input:
Rank Country Driver Races Wins
1 [United_Kingdom] 264 94
2 [Germany] 254 53
3 [Spain] 311 32
4 [Finland] 326 21
5 [Germany] 200 23
我不清楚这是否实际上是文件的一部分。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句