sed 正则表达式剪切字符串
sed regex cut string
我有大约 200 个 php 文件,其中包含一些 iconv()
函数,
像这样:
iconv('GB2312','UTF-8',$aRow[$aColumns[3]])
iconv('GB2312','UTF-8',$rs1['supplier']);
iconv('GB2312','UTF-8',$aRow[ $aColumns[$i] ]);
我不知道在不触及变量的情况下以批处理模式删除 iconv('GB2312','UTF-8',
和最终 )
的最佳方法是什么。
这个 RegEx 可以匹配我的情况,但我不知道如何将它与 sed
一起使用:
^(iconv\(\'GB2312\'\,\'UTF-8\'\,)+|(\))
而且我也不确定 sed
在这种情况下是否是正确的解决方案
有人遇到过类似的问题吗?
您可以使用这个 sed
命令:
sed -i "s/iconv('GB2312','UTF-8',\([^)]*\))\(.*\)//" file
这会将您的 php 变量提取到 </code> 中。 <code>/2
是该行的剩余部分(您发布的示例中的 ;
)
用输出试试这个 cut
语句。
cat file|cut -d, -f3|tr -d ');'
这可能适合您 (GNU sed):
sed 's/iconv('\''GB2312'\'','\''UTF-8'\'',\([^)]*\))//g' file
使用示例字符串作为模板,将 '
替换为 '\''
并将变量保留为第二个 ,
之后的任何字符,这不是结束 )
。此变量包含在引号 (...)
中,即 \(...\)
可以作为后向引用传输到替换命令的 RHS。
试试这个 sed:
cat file | sed 's/iconv(.*,.*,\(.*\)).*//g'
这将只提取变量。
用 grep
grep -o '$[^)]*' infile
我有大约 200 个 php 文件,其中包含一些 iconv()
函数,
像这样:
iconv('GB2312','UTF-8',$aRow[$aColumns[3]])
iconv('GB2312','UTF-8',$rs1['supplier']);
iconv('GB2312','UTF-8',$aRow[ $aColumns[$i] ]);
我不知道在不触及变量的情况下以批处理模式删除 iconv('GB2312','UTF-8',
和最终 )
的最佳方法是什么。
这个 RegEx 可以匹配我的情况,但我不知道如何将它与 sed
一起使用:
^(iconv\(\'GB2312\'\,\'UTF-8\'\,)+|(\))
而且我也不确定 sed
在这种情况下是否是正确的解决方案
有人遇到过类似的问题吗?
您可以使用这个 sed
命令:
sed -i "s/iconv('GB2312','UTF-8',\([^)]*\))\(.*\)//" file
这会将您的 php 变量提取到 </code> 中。 <code>/2
是该行的剩余部分(您发布的示例中的 ;
)
用输出试试这个 cut
语句。
cat file|cut -d, -f3|tr -d ');'
这可能适合您 (GNU sed):
sed 's/iconv('\''GB2312'\'','\''UTF-8'\'',\([^)]*\))//g' file
使用示例字符串作为模板,将 '
替换为 '\''
并将变量保留为第二个 ,
之后的任何字符,这不是结束 )
。此变量包含在引号 (...)
中,即 \(...\)
可以作为后向引用传输到替换命令的 RHS。
试试这个 sed:
cat file | sed 's/iconv(.*,.*,\(.*\)).*//g'
这将只提取变量。
用 grep
grep -o '$[^)]*' infile