Удалить начальную или конечную запятую из строки с разделителями

Это можно сделать с помощью awk, sed или PHP. У меня есть строка с разделителями-запятыми, из которой я хочу удалить значение.

mike,suzy,carter,jason

$remove_value = mike
sed 's/$remove_value//' file_with_delimited_string

Это дает мне, «Сьюзи, Картер, Джейсон»

$remove_value = jason
sed 's/$remove_value//' file_with_delimited_string

Это дает мне «Майк, Сьюзи, Картер»

Как убрать ошибочную запятую независимо от расположения удаленного значения? Это большой файл с множеством строк, разделенных запятыми. Это изменение должно быть только для текущего матча. Я использую PHP для редактирования текстового файла на сервере Linux.

0

Решение

Вы можете попробовать этот простой способ

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
4

Другие решения

sed -r "s/$remove_value,?//g; s/,$//" File
3

Это поможет.

$remove_value = ltrim($remove_value, ',');
$remove_value = rtrim($remove_value, ',');
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);
0

В PHP через одно регулярное выражение.

$str = "jason,mike,jason,suzy,carter,jason";
$remove_value = "jason";
echo preg_replace('~,'.$remove_value.'(?=,|$)|^'.$remove_value.',~', "", $str);

Выход:

mike,suzy,carter
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
0