awk 或 sed,将第一列移到末尾?

Phi*_*ide 4 sed awk text-processing

我有一个由空格分隔的文本文件,如下所示。我需要重新排列列,以便第一列位于每行的末尾。

我有一个如何可以使用来完成的想法cut -d' ' f1,但我不知道是否有一种简单的方法awksed

文本文件:

™?       trade mark
??       information
??..??    left-right arrow..down-left arrow
??..??    right arrow curving left..left arrow curving right
?..?    watch..hourglass done
??       keyboard
??       eject button
?..?    fast-forward button..hourglass not done
??..??    pause button..record button
??       circled M
??..??    black small square..white small square
??       play button
??       reverse button
Run Code Online (Sandbox Code Playgroud)

希望符号列表跟随描述。

αғs*_*нιη 7

sed

sed 's/\([^ ]*\) *\(.*\)/\2 \1/' infile
Run Code Online (Sandbox Code Playgroud)

\([^ ]*\)将匹配所有内容,直到看到非空格字符。
括号\(...\)用于创建一个匹配其索引的组\1

\(.*\)比赛第一组之后的一切,它的索引\2
*\(...\) *\(...\)出匹配组的将忽略在其中匹配组1和2之间的空间,可以使用输出来打印\s*(与GNU sed)或[[:space:]]*(标准地),而不是匹配任何间隔字符,而不是只是ASCII SPC为好。

然后在最后我们首先打印匹配的group2 而不是group1之间有一个空格。


use*_*864 6

awk '{first = $1; $1=""; print $0, first}' file.txt
Run Code Online (Sandbox Code Playgroud)

将第一列存储在变量中,将空白写入第一列,打印整行($0$是整行,现在第一列空白),然后是第一列。