我有大约200个包含一些iconv()
函数的php文件,
像这样的东西:
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
在这种情况下是否是正确的解决方案
之前有人遇到类似的问题吗?
答案 0 :(得分:1)
您可以使用此sed
命令:
sed -i "s/iconv('GB2312','UTF-8',\([^)]*\))\(.*\)/\1\2/" file
将你的php变量提取到\1
。 /2
是该行的剩余部分(您发布的示例中的;
)
答案 1 :(得分:0)
使用输出尝试此cut
语句。
cat file|cut -d, -f3|tr -d ');'
答案 2 :(得分:0)
这可能适合你(GNU sed):
sed 's/iconv('\''GB2312'\'','\''UTF-8'\'',\([^)]*\))/\1/g' file
使用示例字符串作为模板,将'
替换为'\''
,并将变量保留为第二个,
之后的任何字符,而不是结束)
}。此变量包含在带引号的(...)
中,即\(...\)
,它可以作为后向引用转移到替换命令的RHS。
答案 3 :(得分:0)
试试这个sed:
cat file | sed 's/iconv(.*,.*,\(.*\)).*/\1/g'
这将只提取变量。
答案 4 :(得分:0)
使用grep
grep -o '$[^)]*' infile