sed正则表达式切割字符串

我有大约200个php文件,其中包含一些 iconv()</ code>函数,
somelike like 这样的:</ p>

 <代码>的iconv( 'GB2312', 'UTF-8',$ AROW [$ aColumns [3]])
iconv( 'GB2312', 'UTF-8' ,$ rs1 ['供应商']);
iconv('GB2312','UTF-8',$ aRow [$ aColumns [$ i]]);
</ code> </ pre>

我不知道什么是在批处理模式下删除 iconv('GB2312','UTF-8',</ code>和最终)</ code>的最佳方法,而不触及 变量。</ p>

此RegEx可以匹配我的情况,但我不知道如何使用 sed </ code>:
^(iconv \(\ 'GB2312 \'\,\'UTF-8 \'\,)+ |(\))</ code> </ p>

我也不确定 sed </ 代码>在这种情况下是正确的解决方案</ p>

之前遇到类似问题的人?</ p>
</ div>

展开原文

原文

I have about 200 php files that containing some iconv() functions, something like this:

iconv('GB2312','UTF-8',$aRow[$aColumns[3]])
iconv('GB2312','UTF-8',$rs1['supplier']);
iconv('GB2312','UTF-8',$aRow[ $aColumns[$i] ]);

i don't know what could be the best way to remove iconv('GB2312','UTF-8', and final ) in batch mode without touching the variable.

this RegEx could match my case but i don't know how to use it with sed: ^(iconv\(\'GB2312\'\,\'UTF-8\'\,)+|(\))

And i am also not sure that sed is the right solution in this case

Anyone faced a similar problem before?

douliang2935
douliang2935 编写基于token_get_all的PHP脚本(参见PHP手册并进行一些尝试)。
接近 3 年之前 回复

5个回答



您可以使用此 sed </ code>命令:</ p>

   sed -i“s / iconv('GB2312','UTF-8',\([^]] * \))\(。* \)/ \ 1 \ 2 /”file 
</ code> </ pre>

将你的php变量提取到 \ 1 </ code>中。 / 2 </ code>是该行的剩余部分(您发布的示例中的; </ code>)</ p>
</ div>

展开原文

原文

You can use this sed command:

 sed -i "s/iconv('GB2312','UTF-8',\([^)]*\))\(.*\)/\1\2/" file

which will extract your php variable into \1. /2 is the remaining of the line (a ; in the example you posted)



使用输出尝试此 cut </ code>语句。</ p>

  cat file | cut -d,-f3 | tr -d');'
</ code> </ pre>
</ div>

展开原文

原文

Try this cut statement with the output.

cat file|cut -d, -f3|tr -d ');'



这可能对您有用(GNU sed):</ p>

  sed's /  iconv('\''GB2312'\'','\''UTF-8'\'',\([^]] * \))/ \ 1 / g'file 
</ code> </ pre >

使用示例字符串作为模板,将'</ code>替换为'\''</ code>,并将变量保存为第二个之后的任何字符 ,</ code>,它不是结束)</ code>。 该变量包含在引用的(...)</ code>中,即 \(... \)</ code>,它可以作为后向引用转移到替换命令的RHS。 / p>
</ div>

展开原文

原文

This might work for you (GNU sed):

sed 's/iconv('\''GB2312'\'','\''UTF-8'\'',\([^)]*\))/\1/g' file

Use an example string as a template, replacing ' by '\'' and the variable to be kept as any characters from after the second , which is not a closing ). This variable is enclosed in quoted (...) i.e. \(...\) which may be transfered to the RHS of the substitution command as a back reference.



试试这个sed:</ p>

  cat file |  sed's / iconv(。*,。*,\(。* \))。* / \ 1 / g'
</ code> </ pre>

这将只提取变量 。</ p>
</ div>

展开原文

原文

Try this sed:

cat file | sed 's/iconv(.*,.*,\(.*\)).*/\1/g'

This will extract only the variable.



使用grep </ p>

  grep -o'$ [^]] *'infile

</ code> </ pre>
</ div>

展开原文

原文

With grep

grep -o '$[^)]*' infile

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问