Linux:将X行字符串的块转换为1行字符串

时间:2014-08-11 16:08:33

标签: linux string file shell parsing

我的PHP文件中有这个字符串:

$sql  = "SELECT p.pac_rut a, ";
$sql .= "       p.pac_dig b, ";
$sql .= "       p.pac_apepat c, ";
$sql .= "       p.pac_apemat d, ";
$sql .= "       p.pac_nombre e, ";
$sql .= "       to_char(p.pac_fecha_nac,'dd/mm/yyyy') as f, ";
$sql .= "       (to_char(sysdate,'yyyy')-to_char(p.pac_fecha_nac,'yyyy')) as g, ";
$sql .= "       p.sex_cod h ";
$sql .= "FROM   mytable ";
$sql .= "WHERE p.pac_rut=$rut";

sed ':a;N;$!ba;s/\n//g' | sed 's/"; $sql .= "//g' | sed 's/ //g' | sed 's/=\$/=:/g'给我的结果就像:$sql= "SELECT p.pac_rut a,p.pac_dig b,p.pac_apepat c,p.pac_apemat d,p.pac_nombre e,to_char(p.pac_fecha_nac,'dd/mm/yyyy') as f,(to_char(sysdate,'yyyy')-to_char(p.pac_fecha_nac,'yyyy')) as g,p.sex_cod h FROM salud.pacientes p WHERE p.pac_rut=:rut"; 但是如果有2个(或更多)sql查询块,我需要一个可以在2(或更多)行上构建2个(或更多)查询sql的函数。 例如,我有:

$sql  = "SELECT p.pac_rut a ";
$sql .= "FROM   mytable ";
$sql .= "WHERE p.pac_rut=$rut";

$sql2  = "SELECT p.pac_rut a ";
$sql2 .= "FROM   mytable ";
$sql2 .= "WHERE p.pac_rut=$rut";

在同一个文件中,我需要这个结果:

$sql  = "SELECT p.pac_rut a FROM   mytable WHERE p.pac_rut=$rut";
$sql2  = "SELECT p.pac_rut a FROM   mytable WHERE p.pac_rut=$rut";

我怎么能用awk或sed或其他linux工具做到这一点?

0 个答案:

没有答案