문자열에서 스위치 문자를 사용하는 방법은 무엇입니까 sed
? 숫자가 있고 12345678
두 번째와 네 번째 숫자를 바꾸고 싶다고 가정해 보겠습니다 (예: 숫자 = 14325678
).
답변1
괄호를 사용하여 표현식의 일부를 그룹화한 다음 그룹 색인을 사용하여 다른 순서로 \n
그룹을 호출합니다 n
. 예를 들어
$ echo 12345678 | sed -E 's/(.)(.)(.)(.)/\1\4\3\2/'
14325678
답변2
다음과 같은 다양한 방법으로 이 작업을 수행할 수 있습니다.
echo 12345678 |
sed -e '
s/./&\n/4
s/./\n&/2
s/\n\(.\)\(.*\)\(.\)\n/\3\2\1/
'
14325678
perl -lne 'print+(unpack "AAAAA*")[0,3,2,1,4]'
perl -F -lane '@F[1,3] = @F[3,1];print @F'
awk -F "" '{t=$2;$2=$4;$4=t}1' OFS=
awk를 사용하여 빈 문자열을 분할하여 각 문자를 필드로 만든 다음 이를 섞고 Ofs var를 통해 stdout으로 가져옵니다.
Perl을 사용하여 ASCII 템플릿을 사용하여 문자열의 압축을 푼 다음 순서를 다시 정렬하고 마지막으로 표준 출력으로 인쇄합니다. 기본적으로 Ofs는 비어 있습니다.
sed를 사용하여 먼저 뒤집어야 할 문자를 표시합니다. 그런 다음 마지막 단계에서 마커를 사용하여 교체합니다. 이 방법은 바꾸려는 두 문자 위치에 따라 크기가 조정됩니다.
HTH.