2010-03-15 75 views
3

我已經產生了下面的下面的文本文件:如何刪除列?

fe120b99164f151b28bf86afa6389b22 -rw-r--r-- 1 joey joey 186 2010-03-14 19:26 Descript.txt 
41705ea936cfc653f273b5454c1cdde6 -rw-r--r-- 1 joey joey 30 2010-03-14 20:29 listof.txt 
0e25cca3222d32fff43563465af03340 -rw-r--r-- 1 joey joey 28 2010-03-14 23:35 sedexample.txt 
d41d8cd98f00b204e9800998ecf8427e -rw-r--r-- 1 joey joey 0 2010-02-16 15:11 test1.txt 
d41d8cd98f00b204e9800998ecf8427e -rw-r--r-- 1 joey joey 0 2010-02-16 15:11 test2.txt 
d41d8cd98f00b204e9800998ecf8427e -rw-r--r-- 1 joey joey 0 2010-02-16 15:11 test3.txt 
d41d8cd98f00b204e9800998ecf8427e -rw-r--r-- 1 joey joey 0 2010-02-16 15:11 test4.txt 
d41d8cd98f00b204e9800998ecf8427e -rw-r--r-- 1 joey joey 0 2010-02-16 15:11 test5.txt 
d41d8cd98f00b204e9800998ecf8427e -rw-r--r-- 1 joey joey 0 2010-02-16 15:11 test6.txt 
f5c7f1856249d0526be10df5bd5b895a -rw-r--r-- 1 joey joey 26 2010-03-13 14:13 testingfile.txt 
d41d8cd98f00b204e9800998ecf8427e -rw-r--r-- 1 joey joey 0 2010-03-15 00:28 uniquelist.txt 

基本上我想擺脫接入,金額欄,用戶和組列。換句話說,我想擺脫3,4,5列。我曾嘗試使用剪切來保留我想要的列,然後以「」作爲我的分隔符,但是由於文件大小的數字,它使用「空格」作爲分隔符來混淆。任何意見將不勝感激!哦,只需添加,我想將輸出保存爲另一個文本文件。非常感謝!

回答

4

你的cut命令是怎麼樣的?

$ cut -d" " -f1,6- file 
fe120b99164f151b28bf86afa6389b22 186 2010-03-14 19:26 Descript.txt 
41705ea936cfc653f273b5454c1cdde6 30 2010-03-14 20:29 listof.txt 
0e25cca3222d32fff43563465af03340 28 2010-03-14 23:35 sedexample.txt 
d41d8cd98f00b204e9800998ecf8427e 0 2010-02-16 15:11 test1.txt 
d41d8cd98f00b204e9800998ecf8427e 0 2010-02-16 15:11 test2.txt 
d41d8cd98f00b204e9800998ecf8427e 0 2010-02-16 15:11 test3.txt 
d41d8cd98f00b204e9800998ecf8427e 0 2010-02-16 15:11 test4.txt 
d41d8cd98f00b204e9800998ecf8427e 0 2010-02-16 15:11 test5.txt 
d41d8cd98f00b204e9800998ecf8427e 0 2010-02-16 15:11 test6.txt 
f5c7f1856249d0526be10df5bd5b895a 26 2010-03-13 14:13 testingfile.txt 
d41d8cd98f00b204e9800998ecf8427e 0 2010-03-15 00:28 uniquelist.txt 

根據需要重定向到新文件。

awk或

$ awk '{$2=$3=$4=$5="";gsub(/ +/," ")}1' file 
fe120b99164f151b28bf86afa6389b22 186 2010-03-14 19:26 Descript.txt 
41705ea936cfc653f273b5454c1cdde6 30 2010-03-14 20:29 listof.txt 
0e25cca3222d32fff43563465af03340 28 2010-03-14 23:35 sedexample.txt 
d41d8cd98f00b204e9800998ecf8427e 0 2010-02-16 15:11 test1.txt 
d41d8cd98f00b204e9800998ecf8427e 0 2010-02-16 15:11 test2.txt 
d41d8cd98f00b204e9800998ecf8427e 0 2010-02-16 15:11 test3.txt 
d41d8cd98f00b204e9800998ecf8427e 0 2010-02-16 15:11 test4.txt 
d41d8cd98f00b204e9800998ecf8427e 0 2010-02-16 15:11 test5.txt 
d41d8cd98f00b204e9800998ecf8427e 0 2010-02-16 15:11 test6.txt 
f5c7f1856249d0526be10df5bd5b895a 26 2010-03-13 14:13 testingfile.txt 
d41d8cd98f00b204e9800998ecf8427e 0 2010-03-15 00:28 uniquelist.txt 
+0

我的原始剪切命令是這樣的: more indexfile.txt | cut -d「」-f 1,6,7,8,9> goodindex.txt –

+0

非常感謝您的幫助!你的解決方案很完美! –

+0

@Joey jie:如果您不清楚爲什麼您的初始* cut *有時會刪除時間和/或文件名:大小(?)列中的額外填充空格會在* cut *內部創建額外的空字段。這導致您的字段枚舉在某些情況下太短。如果你使用了'-f1,6,7,8,9,10,11',它就可以工作,但顯然'-f1,6-'更簡潔靈活。如果要刪除第一個填充空格的列之外的字段,則需要使用其他解決方案。如果所有列(包括要刪除的列之前的列)具有固定的寬度,也許'cut -c'。 –

2

你必須在C中做到這一點嗎?這在Perl等腳本語言中更容易實現,甚至awk。

awk '{print $1 $6 $7 $8 $9}' file.txt 
-1

試着用excel作爲分隔符打開它們,在那裏刪除它。看看它是否有效。

3

很容易做爲殼管。

cut --delimiter=' ' --fields=3-5 --complement 

如果你真的需要做到這一點在C,你可以通過popen運行在一個子該命令。

如果您有混合的空格和製表符分隔符,則需要將其中一個轉換爲另一個,因爲cut不喜歡多個分隔符。用trcol -x做到這一點。

3

管通過awk '{print $1 $6 $7 $8 $9;}'

+0

這個答案壓縮了所有的空格,它只是一個很長的「單詞」 –

0

我聞到功課,但我會給你懷疑的好處。

剪切會的工作,但你需要一個或多個空格合併成只有一個第一:

sed "s/ \+/ /g" input_file | cut -d' ' -f-2,6- 

對任何命令的輸出保存到一個文件,它的command > file

0

我用awk嘗試 '{打印$ 1 $ $ 6 $ 7 $ 8 9}' file.txt的但是它給了我下面的輸出:

fe120b99164f151b28bf86afa6389b221862010-03-1419:26Descriptions。 TXT 41705ea936cfc653f273b5454c1cdde6302010-03-1420:29listofnumbers.txt 0e25cca3222d32fff43563465af03340282010-03-1423:35sedexample.txt d41d8cd98f00b204e9800998ecf8427e02010-02-1615:11test1.txt d41d8cd98f00b204e9800998ecf8427e02010-02-1615:11test2.txt d41d8cd98f00b204e9800998ecf8427e02010-02-1615:11test3.txt d41d8cd98f00b204e9800998ecf8427e02010-02-1615:11test4.txt d41d8cd98f00b204e9800998ecf8427e02010-02-1615:11test5.txt d41d8cd98f00b204e9800998ecf8427e02010-02-1615:11test6.txt f5c7f1856249d0526be10df5bd5b895a262010-03-1314:13testingfile.txt d41d8cd98f00b204e9800998ecf8427e02010-03-1500:28分類列表。txt

所有的列已經加入到一個對我來說不理想的列中,因爲我會在某個時候使用uniq。謝謝你的幫助!

0
$ perl -lane'$, = " "; print @F[0,5..$#F]' input.txt 

注意:除了the cut version它由一個單一的空間代替在輸入兩個或更多個空間例如,它可以打破了輸入文件名。