如何使用一个班轮重新组织
foo r1.1 abc
foo r10.1 pqr
qux r2.1 lmn
bar r33.1 xpq
# In fact there could be more fields that preceeds column with "rxx.x".
进入这个
r1.1 foo abc
r10.1 foo pqr
r2.1 qux lmn
r33.1 bar xpq
基本上,将第二列放入第一列以及其后的所有其他内容之后。
答案 0 :(得分:4)
假设您的文本位于文件“test”中,则会执行此操作:
perl -lane 'print "$F[1] $F[0] $F[2]"' test
答案 1 :(得分:3)
如果您有三列以上,则需要以下内容:
perl -lane 'print join q( ),$F[1],$F[0],@F[2..@F-1]'
答案 2 :(得分:3)
$ perl -pale '$_ = "@F[1,0,2..$#F]"' file
如果它以制表符分隔,则需要更多:
$ perl -pale 'BEGIN { $"="\t"; } $_ = "@F[1,0,2..$#F]"' file
答案 3 :(得分:2)
'infile'的内容:
foo r1.1 abc
foo r10.1 pqr
qux r2.1 lmn
bar r33.1 xpq
Perl one-line:
perl -pe 's/\A(\S+\s+)(\S+\s+)/$2$1/' infile
结果:
r1.1 foo abc
r10.1 foo pqr
r2.1 qux lmn
r33.1 bar xpq
答案 4 :(得分:2)
基本答案由其他人提供,我考虑了固定宽度数据的情况,可能有空字段:
>cat spacedata.txt
foo r1.1 abc
foo r10.1 pqr
qux r2.1 lmn
bar r33.1 xpq
r1.2 cake
is r1.2 alie
>perl -lpwE '$_=pack "A7A5A*", (unpack "A5A7A*")[1,0,2];' spacedata.txt
r1.1 foo abc
r10.1 foo pqr
r2.1 qux lmn
r33.1 bar xpq
r1.2 cake
r1.2 is alie
答案 5 :(得分:1)
file
a 5 ss
b 3 ff
c 2 zz
cat file | awk '{print $2, $1, $3}' # will print column 2,1,3
5 a ss
3 b ff
2 c zz
#or if you want to sort by column and print to new_file
cat file | sort -n -k2 | awk '{print $0}' > new_file
new_file
c 2 zz
b 3 ff
a 5 ss