gpt4 book ai didi

regex - 如何在 unix (osx) 中搜索/替换一堆文本文件

转载 作者:行者123 更新时间:2023-12-04 23:30:05 24 4
gpt4 key购买 nike

我有一个正则表达式,在 http://regexpal.com/ 上测试成功:

^(\".+?\"),\d.+?,"X",-99,-99,-99,-99,-99,-99,-99,(\d*),(\d*)

我的测试数据如下所示:
"AB101AA",10,"X",-99,-99,-99,-99,-99,-99,-99,394251,806376,179,"S00","SN9","00","QA","MH","X"
"AB101AF",10,"X",-99,-99,-99,-99,-99,-99,-99,394181,806429,179,"S00","SN9","00","QA","MH","X"
"AB101AG",10,"X",-99,-99,-99,-99,-99,-99,-99,394251,806376,179,"S00","SN9","00","QA","MH","X"
"AB101AH",10,"X",-99,-99,-99,-99,-99,-99,-99,394371,806359,179,"S00","SN9","00","QA","MH","X"
"AB101AJ",10,"X",-99,-99,-99,-99,-99,-99,-99,394171,806398,179,"S00","SN9","00","QA","MH","X"
"AB101AL",10,"X",-99,-99,-99,-99,-99,-99,-99,394331,806530,179,"S00","SN9","00","QA","MH","X"

我想用 \1,\2,\3 替换它在每一行上,例如第 1 行会给出
"AB101AA",394251,806376

如何运行此正则表达式搜索并替换 osx 文件夹中的所有 csv 文件?我尝试使用 sed 但它提示语法错误(另外我不确定它是否支持这个正则表达式?)。另外,^(行首)和 $(行尾) anchor 是逐行工作的,还是与文件的开头和结尾匹配?

更新:从 csv 中获取特定字段的 cut、awk 等一些很好的响应,但我最近了解到我需要从该列表中获取数字并将它们切成 2 个子值,因此我上面的示例输出需要看起来像:
"AB101AA",3,94251,8,06376

据我所知,我需要为此使用正则表达式。

最佳答案

您想提取字段 1、11 和 12?对于这样的任务,awkcut真的很优秀!例如。

awk -F, '{print $1, $11, $12}' input

使用 cut :
cut -d, -f1,11,12 input 

使用 perl . -a打开自动拆分模式——perl 会自动将空白处的输入行拆分为 @F大批。 -F与 -a 结合使用,以选择分割行的分隔符。
perl -F, -lane 'printf "%s, %d, %d\n", $F[0], $F[10], $F[11]' input 

...最后,一个纯粹的 bash 解决方案
#!/bin/bash
IFS=,
while read -ra ARRAY;
do
echo ${ARRAY[0]}, ${ARRAY[10]}, ${ARRAY[11]}
done < input

关于regex - 如何在 unix (osx) 中搜索/替换一堆文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6486574/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com