-4 grep sed awk text-processing
我想从只包含数字的 CSV 文件中获取行。我的输入文件如下所示:
8.1.0,289,,,,,,,,,,,,,,,,
9,260,,,,,,,,,,,,,,,,
10,207,,,,,,,,,,,,,,,,
9,206,,,,,,,,,,,,,,,,
Note,8,,,,,,,,,,,,,,,,
10,194,,,,,,,,,,,,,,,,
8.1.0,184,,,,,,,,,,,,,,,,
Run Code Online (Sandbox Code Playgroud)
它应该能够获得上述格式的数字,例如9
,9.0.0
,8.1
等。
我该如何使用csvgrep
orawk
或sed
命令呢?CSV 文件有两列。它应该省略其中包含任何字母的行。
您可以使用该grep
命令,如下所示:
grep -v "[A-Za-z]" filename > filename.output
Run Code Online (Sandbox Code Playgroud)
这是测试:
# cat zz2
1;2
a,1
2,B
# grep -v "[A-Za-z]" zz2
1;2
Run Code Online (Sandbox Code Playgroud)
要过滤空行,您可以使用:
grep -v "[A-Za-z]" zz2 | grep -v '^$'
Run Code Online (Sandbox Code Playgroud)
使用awk
和 验证所有字段都包含有效数字并跳过空字段。
awk -F, '{ for(i=1; i<=NF; i++) if($i+0!=$i && $i!="") next }1' infile
Run Code Online (Sandbox Code Playgroud)