删除文本中与浮点数相关的特定行

删除文本中与浮点数相关的特定行

我有一个由字符串和数字组成的数据文件,有四列,如下所示;

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}\bhttps://regex101.com/r/bz5Dzr/1):

  • \.与字符 . 字面意思匹配(区分大小写)
  • 匹配以下列表中的单个字符 [0-9]{6}
    • {6} 量词 — 匹配 6 次
    • 0-9 0(索引 48)和 9(索引 57)之间的单个字符(区分大小写)
  • \b断言字边界的位置

相关内容