文章の最初の部分をどのように変更しますか?

文章の最初の部分をどのように変更しますか?

私はどんな文章でも反転できることを知っています。 echo "a,b,c,d" | rev

しかし、文章の最初の部分だけを変更したい場合はどうすればよいですか?

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

私はこれを得ます:

sseccA d,c,b,a、私が本当に欲しいものは次のとおりです。

d,c,b,a Access

どうすればいいですか?

答え1

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

関連情報