根据Iain的回答,我想出了这个sed技巧……
$sed 's/\(INSERT[^(]*\).*\((239560,[^)]*)\),.*/\1\2/' sample.sql | tee 1-record.sql
INSERT INTO usertext VALUES (239560, 2, 3, 4)
$
–
不使用sed的变化…
您可以提取仅与该一个数字匹配的某些行/插入的值.
$cat sample.sql
INSERT INTO usertext VALUES (101, field2 etc), (102, field2 etc), (239560, 2, 3, 4), (5, 8, 9)
INSERT INTO usertext VALUES (101, field2 etc), (102, field2 etc), (1239560, 2, 3, 4), (5, 8, 9)
$egrep -o '(\(239560\,[^)]+\))' sample.sql
(239560, 2, 3, 4)
$
如果你使用-n开关和grep来匹配匹配行,那么插入的其余部分可以很容易地编写脚本,然后将所有内容剪切到第一个(
博客内容展示了如何利用sed和grep命令从SQL脚本中提取特定数字相关的行和插入语句,例如提取与239560相关的记录。通过示例,解释了sed的替换操作和grep的正则表达式匹配,帮助读者理解如何在shell脚本中进行文本处理。
548

被折叠的 条评论
为什么被折叠?



