删除两个字符串之间的未知字符

时间:2018-03-23 14:13:19

标签: string bash sed

我正在寻找一种解决方案,而不是允许我删除以s_开头并以='结尾的字符串:

我假设以下字符串:

"s_login_type='Anonymous', s_login_url='', s_login_method='GET'"

由此我想只保留重音之间的字段,即:

'Anonymous', '', 'GET'

我试过了:

sed "s/s_/\&/g;s/\(='\)[^\n]*\n/\1 /g"

但它不会删除s_

之后的字符

有没有办法用sed做到这一点?

2 个答案:

答案 0 :(得分:4)

  

删除以s_开头并以=

结尾的字符串
$ sed 's/s_[^=]*=//g' <<< "s_login_type='Anonymous', s_login_url='', s_login_method='GET'"
'Anonymous', '', 'GET'

答案 1 :(得分:2)

使用逗号或等号作为字段分隔符,并使用每第2个字段。

awk -F '[,=]' '{for (i=2; i<=NF; i+=2) print $i}' <<<"$data"| paste -sd,