당신은 매개 변수의 수를 알고 그들은 (따라서 중첩 된 괄호없이 임베디드 쉼표 중 하나) 그 다음, 항상 '간단한'없는 경우 : 전에이 쉼표 후에 공간을 견디는 것을
echo "func_name(4234,53543,76,1)" |
sed 's/.*(\([^,)]*\),\([^,)]*\),\([^,)]*\),\([^,)]*\))/a1 \1; a2 = \2; a3 = \3; a4 = \4/'
주 (그리고 그들도 - 그러나 당신은 전에 공간을 남기지 않을 것입니다, 그렇지 않습니까?).
매개 변수가 간단한 부호없는 정수이고, 당신은 아마도, 함수 이름을 알고있는 경우 또는
:
echo "func_name(4234,53543,76,1)" |
sed 's/func_name(\(\([0-9]*\), *\([0-9]*\), *\([0-9]*\), *\([0-9]*\)\))/args = \1/'
:
echo "func_name(4234,53543,76,1)" |
sed 's/func_name(\([0-9]*\), *\([0-9]*\), *\([0-9]*\), *\([0-9]*\))/a1 \1; a2 = \2; a3 = \3; a4 = \4/'
는 한 번의 매치에서 모든 매개 변수를 얻으려면, 당신은 중첩 된 그룹을 할 필요가
이제 \2
.. \5
은 여전히 별도의 인수를 참조합니다.
echo "func_name(4234,53543,76,1)" |
sed 's/func_name(\(\([0-9]*\)\(, *\([0-9]*\)\)\{3\}\))/args = \1/'
이 첫 번째 후 인수를 찾기 위해 반복 제어 \{3\}
를 사용합니다.
당신은 얼마나 많은 매개 변수를 알고 계십니까? '34 + 45'와 같은 표현식을 처리해야합니까? 'func_name (abs (b), sqrt (c), hypot (sqrt (d * e + f * g), abs (h-4)), 1)'같은 중첩 괄호를 처리해야합니까? –
4 개의 매개 변수, 부호없는 정수 –
OK : 고정 된 알려진 수의 간단한 인수는 비교적 간단합니다. 괄호가없는 표현은 단지 약간 더 어렵습니다. 인수 목록에 쉼표가있는 중첩 된 괄호는 완전히 다른 볼 게임이며 정규 표현식을 사용하여 시도하지 않습니다. –