我在下面生成了以下文本文件:
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。我已经尝试使用cut来保留我想要的列并且使用“”作为我的分隔符但是由于文件大小的数字,它使用“space”作为分隔符而混乱。任何建议将不胜感激!哦,只是添加,我想将输出保存为另一个文本文件。非常感谢!
答案 0 :(得分: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
答案 1 :(得分:3)
轻松完成shell管道。
cut --delimiter=' ' --fields=3-5 --complement
如果您确实需要在C中执行此操作,则可以通过popen
在子流程中运行该命令。
如果您有混合空格和制表符分隔符,则需要将其中一个转换为另一个,因为cut
不喜欢多个分隔符。使用tr
或col -x
执行此操作。
答案 2 :(得分:3)
管道通过awk '{print $1 $6 $7 $8 $9;}'
?
答案 3 :(得分:2)
你必须在C中这样做吗?这在像perl甚至awk这样的脚本语言中会更容易做到。
awk '{print $1 $6 $7 $8 $9}' file.txt
答案 4 :(得分:0)
我闻到了作业,但我会给你怀疑的好处。
剪切将起作用,但您需要将一个或多个空格合并为一个:
sed "s/ \+/ /g" input_file | cut -d' ' -f-2,6-
要将任何命令的输出保存到文件,它是command > file
。
答案 5 :(得分:0)
我尝试使用awk'{print $ 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:28uniquelist.txt
所有列都已加入到一个不适合我的列中,因为我将在某个时候使用uniq。谢谢你的帮助!
答案 6 :(得分:0)
$ perl -lane'$, = " "; print @F[0,5..$#F]' input.txt
注意:与the cut
version一样,它会将输入中的两个或多个空格替换为单个空格,例如,它可能会破坏输入中的文件名。
答案 7 :(得分:-1)
尝试在excel中以空格作为分隔符打开它们,然后将其删除。看看它是否有效。