Sql 如何使用grep更改列

Sql 如何使用grep更改列,sql,text,grep,bbedit,Sql,Text,Grep,Bbedit,先谢谢你。 我有一个巨大的数据库,所有行都是这样开始的: 497、36390、495、88、89、2,'xxdurango/a- 49836391,193100,1,'xxsalamanca 49936392498,94,95,2,'xxsalamanca/诺蒂 500,36393,498,96,97,2,'xxsalama 50136394,101108,1,'xxg 我需要在之后更改第三列 我正在尝试使用grep 所有这些grep命令都会选择行中的其他值 我想使用BBEdit进行搜索和替换

先谢谢你。 我有一个巨大的数据库,所有行都是这样开始的:

497、36390、495、88、89、2,'xxdurango/a-

49836391,193100,1,'xxsalamanca

49936392498,94,95,2,'xxsalamanca/诺蒂

500,36393,498,96,97,2,'xxsalama

50136394,101108,1,'xxg

我需要在之后更改第三列

我正在尝试使用grep

所有这些grep命令都会选择行中的其他值

我想使用BBEdit进行搜索和替换,所有第三列都需要更改为相同的值

需要搜索: 行首+数字1,数字2

或者类似于: 行首,3位数字,四位数字

有什么提示吗

谢谢

使用grep只能显示与所需模式匹配的行,因此您要么得到全部,要么什么也得不到,您将无法获得所需的字段分隔。还有其他一些工具可以使这变得更容易,例如sed,它使用类似的正则表达式,但可以编辑流。它的名字是streameditor的缩写。例如,以下内容将第三个字段更改为YYYY:

sed -r 's/^(\(([^,]+,){2})[^,]+,/\1 YYYY,/p' input_filename
该命令细分如下:

-r打开扩展正则表达式 s/是搜索和替换命令的开始 ^将seach锚定在测线的起点 开始一个分组,稍后我们将参考该分组 \是行开始处的文字开头括号 [^,]+,读取为一个或多个非逗号后跟逗号的字符,并将其视为单个单元 {2} 表示上一单元重复两次 将整个图案作为一个组关闭到此点,稍后将引用该组 [^,]+,与上面相同,非逗号后跟逗号 /标记从搜索模式到替换模式的更改 \1被模式空间中的第一个组替换,直到第二个逗号 YYYY是我们的文字替换 /p结束替换模式并说打印更改 使用类似awk的东西会更容易:

awk -F, '{OFS=","; $3="YYYY"; print}' input_filename
很明显,这是如何工作的,您可能只需要知道-F将输入字段分隔符设置为,而OFS=,对print使用的输出字段分隔符执行相同的操作。请注意,我们只是使用逗号来分隔字段,因此第一个字段将包括左括号。因为您只想更改第三个字段,所以这不是问题。如果要更改第一个字段,则需要将其考虑在内

另一种选择是使用剪切和粘贴,但我将把它作为练习。

-输入中的尖括号在哪里?更新您的输入并显示预期结果