我有一个CSV文件,大约5k行,示例如下:
apple,tea,salt,fish
apple,oranges,ketchup
...
salad,oreo,lemon
salad,soda,water
我只需要提取匹配apple或salad的第一行,并跳过出现这些单词的其他行。
我可以用regex“apple”来做类似的事情。|salad”,但它会提取所有找到这些单词的行。
所需结果为:
apple,tea,salt,fish
salad,oreo,lemon
我能够在文本编辑器和OpenOffice Calc应用程序中使用REGEX。
3条答案
按热度按时间mwkjh3gx1#
您可以使用强大的Miller,并运行
为了能具有
--nidx
,用于设置格式,通用索引格式--fs ","
,用于设置分隔符filter '$1=~"(apple|salad)"'
,将正则表达式筛选器应用于第一个字段then head -n 1 -g 1
,根据第一个字段的值获取第一条记录ctzwtxfj2#
假定行已排序
^(\w+)(.+\R?)(?:\1(?2))+
$1$2
***滴答***回绕 *
***SELECT***正则表达式 *
*取消勾选
. matches newline
说明:
屏幕截图(之前):
屏幕截图(之后):
wqlqzqxt3#
在记事本++中,重复执行正则表达式,将
^(\w+,)(.*)\R\1.*$
替换为\1\2
。选择“环绕”。说明:
替换字符串只保留第一行,第二行被丢弃。
演示:
起始值:
用上面的表达式执行“全部替换”操作会得到:
再单击两次“全部替换”,将产生:
每按一次“全部替换”将删除大约一半不需要的行。