2013-03-29 62 views

回答

1

一種方式(輸出是製表符分隔):

perl -lane'print join "\t",@F[2..$#F]' file 

對於右對齊的輸出:

perl -lane'printf "%10s",$_ for @F[2..$#F];print "";' file 
+0

感謝它的工作。順便說一下,如何讓結果一致? – user2176228

+0

爲了得到右對齊的列,你可能會爲每個字段使用一個'printf()',其格式爲:'%10.2f'。這不是所要求的sed解決方案,而是'awk'或'perl'(或'python'或'ruby'或...)可能比'sed'更明智。 –

+0

高爾夫球:空格分隔:'perl的-pale '$ _ = 「@ F [2 .. $#F]」' file'抽頭分離:'perl的-pale'$ 「=」 \ t「的; $ _ = 「@F [2 .. $#F]」 'file' – ikegami

1

使用sed來除去前兩列:

sed 's/^[ \t]*[0-9.]*[ \t]*[0-9.]*[ \t]*//' input1 input2 

您如果您想刪除更多列,可以增加[ \t]*[0-9.]*的數量。

+0

由於其工作由路怎麼走,結果右對齊 – user2176228

+0

如果需要右對齊。。?結果,你應該使用'awk'或'perl'。 –

+0

@ user2176228,右對齊使用bash或perl的printf的,但檢查的'sed的「s/^ [\ t] *輸出[0-9] * [ \ t] * [0-9] * [\ t] * //」輸入|列-t',看看你是否喜歡它 – perreal

1

AWK可以做同樣讓您輕鬆切換列並根據需要更改的分離器,輸​​入和輸出:

awk '{print $3,$4,$5}' test 
3.3 4.2 5.1 

希望它有助於

+0

這不是請求'sed'的解決方案 - 但'awk'或。 'perl'(或'python'或'ruby'或...)可能比'sed'更爲明智,並且替代方案似乎是可接受的樂。 –

0
awk '{$1=$2="";gsub("^ ","",$0);}1' your_file 

perl -lane 'print "@F[2..scalar(@F)]"' your_file