다음과 같은 것을 변경해야합니다
<1> to _1
<21> to _21
sed, awk 또는 vi를 사용하여 이를 자동화하는 방법이 있습니까?
참고: 꺾쇠 괄호 안의 숫자는 다양합니다.
답변1
그리고 sed
:
sed 's/<\([0-9]*\)>/_\1/g'
질문의 예제에서 이것을 실행하면
_1 to _1
_21 to _21
패턴은 <\([0-9]*\)>
내의 숫자와 일치합니다 <...>
. 대체 텍스트 <...>
이 비트 입력을 접두사가 붙은 숫자(있는 경우)로 대체합니다 _
.
Vi에서:
:%s/<\([0-9]*\)>/_\1/g
sed
명백한 역사적 이유로 이는 해결책이 됩니다.
<21>
Bash의 쉘 변수에 이 문자열이 있는 경우 var
:
printf '%s\n' "_${var//[<>]/}"
이는 _21
변수 대체를 사용하여 인쇄 됩니다 ${parameter//pattern/string}
.
그리고 tr
. 참고: 이는모습매우 제한된 입력 세트를 처리합니다. 발생 위치에 관계없이 맹목적 <
으로 대체 _
하고 제거합니다 .>
tr '<' '_' <file.in | tr -d '>'
이것은 진지한 해결책이라기보다는 농담에 가까운 해결책이지만,작동할 것이다입력에 나타나는 유일한 합계가 중간에 숫자가 있는 경우 <
입니다 .>