0

彼ら!2 つの単語を 1 行で交換しようとしていますが、うまくいきません。例: 「今日は私の大学の最初の日です」は「私の今日は大学の最初の日です」である必要があります。

これは私が試したものです:

sed 's/\([a-zA-z0-9]*\)\([a-zA-z0-9]*\)\([a-zA-z0-9]*\)/\3\2\1/' filename.txt

私は何を間違っていますか?

4

5 に答える 5

0
sed -r 's/^(\w+)(\s+\w+\s+)(\w+)(.*)/\3\2\1\4/'

あなたの例で:

kent$  echo "Today is my first day of university"|sed -r 's/^(\w+)(\s+\w+\s+)(\w+)(.*)/\3\2\1\4/'                                                                           
my is Today first day of university

あなたの問題については、 awk の方が簡単です:

awk '{t=$1;$1=$3;$3=t}1'

同じ入力:

kent$  echo "Today is my first day of university"|awk '{t=$1;$1=$3;$3=t}1'                       
my is Today first day of university
于 2013-03-30T20:31:33.580 に答える
0

\s空白文字を意味するものを作成し始めます。スペースではなくすべてに一致するすべて
の単語に一致するために使用します。 そして、単語間のスペースとの一致が必要でした。代わりにスペースを書き直すことを忘れないでください。[^\s]*
\s*

例としてこれを見てください:

sed 's#\([^ ]*\)\s+#\1 #'

(#の代わりに使用します/)

于 2013-03-30T19:06:30.840 に答える