我有一个由字符串和数字组成的数据文件,有四列,如下所示;
ALIC00AUS_R_20183350000.gz -4052052.705667828 4212835.982693942 -2545104.648264054
ALIC00AUS_R_20183350000.gz -4052052.702108623 4212836.006039822 -2545104.654250688
ALIC00AUS_R_20183350000.gz -4052052.694316 4212835.990059 -2545104.643113
我需要删除所有包含 6 个浮点数的行。数据文件的原始大小由几千行组成。所有数字中最小浮点数始终是 6。
答案1
grep -v -E "\.[0-9]{6}\b" input.txt >output.txt
以下是该命令的直观解释:https://explainshell.com/explain?cmd=grep+-v+-E+%22%5C.%5B0-9%5D%7B6%7D%5Cb%22+input.txt+%3Eoutput.txt
这里的正则表达式\.[0-9]{6}\b
(https://regex101.com/r/bz5Dzr/1):
\.
与字符 . 字面意思匹配(区分大小写)- 匹配以下列表中的单个字符 [0-9]{6}
- {6} 量词 — 匹配 6 次
- 0-9 0(索引 48)和 9(索引 57)之间的单个字符(区分大小写)
\b
断言字边界的位置