2013-10-21 118 views
-1

所以我必须一次运行剪切和排序文件。我使用这个命令:如何运行多个Unix命令?

sort -k2 customers;cut -f7-31 customers

目的是切割线7-31然后按字母顺序组织它们,但我不知道如何去实现它。任何输入都会有所帮助,谢谢。

+0

“cut lines 7-31” - lines or fields?或列? '切'不能削减线路,所以我想确定你在问什么。任何一个最小例子的机会? – Amadan

+0

这里是名副其实的问题: 使用vi创建一个名为“my_customers”用适当的序幕文件。此脚本应该使用'剪切'和'排序'来创建'客户'文件的列表,其中包含按客户名称排序的客户姓名和电话。“客户”文件具有以下固定长度 长度格式: 字段位置 ----------------------- --------- - 客户编号1-5 名称7-31 市33-47 州49-50 邮编54-59 电话60-71 – user2902041

+0

即时通讯能够通过使用切割线切割-f7-31客户,然后即时通讯也能够通过使用排序-k2客户(2代表第二列)的名称对相同的文件进行排序,现在我只需要它按字母顺序给我切割信息..我真的很新,所以即时尝试解释最好的我可以 – user2902041

回答

2

目的是切割线,7-31 ...

您可以使用sed

sort -k2 customers | sed '7,31!d' 

这将管sort输出到sed这将显示7行 - 从sort输出的31(包括两端)。


为了选择一个字符范围,则需要将-c选项提供给cut和不-f(其选择字段):

sort -k2 customers | cut -c7-31 

这将选择字符7 - 在每行31从sort输出。


为了sort最终输出,使用另一管道:

sort -k2 customers | cut -c7-31 | sort 
+0

太棒了!非常感谢你,帮助我百万! – user2902041

+1

我不明白它 - 因为'cut'和'sort'不会以任何方式影响对方,为什么即使打算在后面再度过一次,为什么还要用'sort -k2'来打扰呢?不是你的代码几乎等同于cut -c7-31 | sort'? – Amadan

+0

@Amadan OP可能需要的想法是如何使用多个管道。我并不不同意关于多余的“排序”的观点。也就是说,问题中有一些样本输入/输出总是有帮助的。 – devnull

1

这里的关键是要使用管道这是在外壳的奇最强大的东西之一。见Unix Pipes

管道在UNIX中是美好的;强大。我有没有提到过这个?

要回答你的问题;改变;|和删除文件名

sort -k2 customers | cut -f7-31 

会在排序文件的客户发送的是输出到剪切的输入运行;没有临时文件。

一般来说,你会怎么做

sort -k2 customers | cut -f7-31 > customers.modified 

你可以有多个命令在管道,只要你喜欢;所以删除你想要的副本

sort -k2 customers | uniq | cut -f7-31 > customers.modified