这可以使用awk,sed或PHP来完成。我有逗号分隔的字符串,我想删除一个值。
mike,suzy,carter,jason
$remove_value = mike
sed 's/$remove_value//' file_with_delimited_string
这给了我',suzy,carter,jason'
$remove_value = jason
sed 's/$remove_value//' file_with_delimited_string
这给了我迈克,苏格,卡特,'
如果删除了值的位置,如何删除错误的逗号?这是一个包含许多逗号分隔字符串的大文件。此更改必须仅适用于当前匹配。我使用PHP编辑Linux服务器上的文本文件。
答案 0 :(得分:4)
你可以尝试这种简单的方式
sed "s/,\?$remove_value,\?//" FileName
如果您测试中间值,则可以使用此方式
sed "s/,$remove_value\|$remove_value,//" FileName
如果删除行中发生的所有值,请使用g
sed "s/,$remove_value\|$remove_value,//g" FileName
示例:强>
remove_value='mike'
<强>输出:强>
suzy,carter,jason
示例:强>
remove_value='suzy'
<强>输出:强>
mike,carter,jason
示例:
remove_value='jason'
<强>输出:强>
mike,suzy,carter
答案 1 :(得分:3)
sed -r "s/$remove_value,?//g; s/,$//" File
答案 2 :(得分:0)
这就行了。
$remove_value = ltrim($remove_value, ',');
$remove_value = rtrim($remove_value, ',');
答案 3 :(得分:0)
这是一个古怪的方式在php中做到这一点:
$list = 'mike,suzy,carter,jason';
$list_array = explode(',' , $list);
$goner = 'suzy';
$goner_index = array_search($goner, $list_array);
unset($list_array[$goner_index]);
$list = implode(',', $list_array);
答案 4 :(得分:0)
在php中通过单个正则表达式。
$str = "jason,mike,jason,suzy,carter,jason";
$remove_value = "jason";
echo preg_replace('~,'.$remove_value.'(?=,|$)|^'.$remove_value.',~', "", $str);
输出:
mike,suzy,carter
答案 5 :(得分:0)
使用awk:
$ for replace_string in mike suzy carter jason;
do awk -v s=$replace_string '{ sub("((,|^)"s")|("s"(,|$))","") }1' a.txt;
done
suzy,carter,jason
mike,carter,jason
mike,suzy,jason
mike,suzy,carter