문장의 첫 부분을 어떻게 바꾸나요?

문장의 첫 부분을 어떻게 바꾸나요?

나는 어떤 문장이라도 뒤집을 수 있다는 것을 알고 있습니다. echo "a,b,c,d" | rev

하지만 문장의 첫 부분만 바꾸고 싶다면 어떻게 해야 할까요?

echo "a,b,c,d Access" | rev

나는 이것을 얻습니다 :

sseccA d,c,b,a, 제가 ​​정말로 원하는 것은 다음과 같습니다.

d,c,b,a Access

어떻게 해야 하나요?

답변1

한 가지 방법은 다음을 사용하여 read줄을 첫 번째 단어로 나누고 나머지 단어로 나누는 것입니다.rev

$ echo "a,b,c,d Access" | { read -r first rest; printf '%s %s\n' "$(rev <<< "$first")" "$rest"; }
d,c,b,a Access

답변2

그리고 sed:

sed 's/^/ /;:1
     s/^\([^ ]*\) \([^ ]\)/\2\1 /;t1
     s/ //'

그리고 perl:

perl -pe 's/\S+/reverse $&/e'

그리고 zsh:

string='a,b,c,d Access'
setopt extendedglob
result=${string/(#m)[^ ]#/${(j::)${(Oas::)MATCH}}}

답변3

사용 pee(티)부터더 많은 유틸리티( apt-get install moreutils):

echo -n "a,b,c,d Access" | pee "cut -d ' ' -f 1 | rev" "cut -d ' ' -f 2" | tr '\n' ' '

결과는 d,c,b,a Access번역된 개행 문자에서 나오는 후행 공백입니다.

답변4

일방 perl통행:

$ echo "a,b,c,d Access" | perl -anle 'print ~~reverse($F[0])," @F[1..$#F]"'
d,c,b,a Access

관련 정보