使用sed删除和替换String

时间:2016-05-14 08:18:41

标签: bash sed

我已将列数据复制到文件中,它看起来像 -

    echo "copy admin.product (components) to 'updateStatement.cql';" 

O / p文件 -

     ""
     "['1.809859', '1.809859','2.334883']"
     ['3.MYFIT-LTR-DYN']  

我正在尝试使用sed删除和替换字符串,但没有工作

     sed -i"s (/[\]\[\"]/,"") "updateStatement.cql

预期o / p -

         ''
         '1.809859'
         '1.809859' 
         '2.334883'
         '3.MYFIT-LTR-DYN'

请建议

4 个答案:

答案 0 :(得分:3)

听起来你正在尝试这样做(GNU awk for multi-char RS):

$ awk -v RS='[][", ]+' 'NF' file
'1.809859'
'1.809859'
'2.334883'
'3.MYFIT-LTR-DYN'

答案 1 :(得分:2)

试试这个:

sed -i "s/ *\"/'/g;s/ *[^0-9]*\('[^']*'\)\]*'*/\1/g;s/\(.\)''/\1'\n'/g;" updateStatement.cql

答案 2 :(得分:0)

由于您需要替换'",因此最好编写一个脚本,例如,包含

的sedscript.sed
s/"/'/g
s/,[[:blank:]]?/\n/g
s/\[?\]?//g
s/([[:alnum:]])''$/\1'/
s/.?('[[:alnum:]])/\1/

对于输入文件, yourfile

""
"['1.809859', '1.809859','2.334883']"
['3.MYFIT-LTR-DYN'] 

sed -rf sedscript.sed yourfile

给出:

''
'1.809859'
'1.809859'
'2.334883'
'3.MYFIT-LTR-DYN' 

答案 3 :(得分:0)

你真的喜欢''行吗?当您只想要带单引号的字段时,可以使用

grep -Eo "'[^']*'" updateStatement.cql