我有一个文件夹,其中包含具有以下结构的文本文件:
@ATTRIBUTE dynamics_rms_Mean NUMERIC
@ATTRIBUTE dynamics_rms_Std NUMERIC
@ATTRIBUTE dynamics_rms_Slope NUMERIC
@ATTRIBUTE dynamics_rms_PeriodFreq NUMERIC
@ATTRIBUTE dynamics_rms_PeriodAmp NUMERIC
@ATTRIBUTE dynamics_rms_PeriodEntropy NUMERIC
@DATA
9.749956e-01 2.257056e-01 1.667380e-01 NaN NaN 9.706193e-01
我想使用 Sublime Text 来查找和替换所有这些文本文件" space"字符低于@DATA
,但保留以@ATTRIBUTE
开头的行中的空格。
我找到了一种方法来选择文本文件中的所有空格,但我不知道如何只选择@DATA
之后的空格并在每个文件中替换它们(使用 ctrl + 移 + ˚F)。
我很感激有关如何解决此问题的任何建议,请提前感谢。
答案 0 :(得分:1)
您可以使用以下正则表达式替换(请注意模式末尾有一个文字空间):
(?:^@DATA|\G(?!^))\K([\s\S]*?) (?!$)
并替换为,$1
更换后:
答案 1 :(得分:1)
您可以使用此搜索/替换:
搜索:(?:\G(?!^)|^@DATA\R)[^ ]+\K[ ]
替换:,
模式细节:
(?: # non-capturing group
\G # anchor for the position of the last match
(?!^) # not at the start of a line
| # OR
^ # start of a line
@DATA
\R # any newline sequence
)
[^ ]+ # one or more characters that are not a space
\K # discards all on the left from the match result
[ ] # a space
要处理多个连续的数据行并停在第一个空白行,您需要将模式更改为:
(?:\G(?!^)|^@DATA\R)[^\n ]+(?:\R[^\n ]+)?\K[ ]