【发布时间】:2014-02-14 04:28:01
【问题描述】:
首先,提前感谢大家的帮助!我在学校一直在学习 Unix,并且在最近的家庭作业之前一直表现良好。
我正在尝试找出在我的家庭作业中处理这个特定部分的最佳方法。
我有一个头文件,我必须将它分成两个单独的文件。这部分作业分为两部分:
首先,文件的前两行进入一个文件。我是这样做的:
head -2 headers > file1
但是,下一个请求是获取两个列标题(--Regular-- 和--Overtime--)并将它们放入另一个文件中......这就是我遇到的问题。
头文件如下所示:
Merry Land Training Academy
Pay Report
Week of June 12, 1999
--Regular--- --Overtime-- Gross Net
Employee Hours Rate Hours Rate Pay Pay
我知道 grep 只能匹配包含该模式的行,但是如何删除最后两个之后的字符 -- 在 Overtime 中?
例如,我的 grep 将返回以下内容:
egrep 'Regular' headers
--Regular--- --Overtime-- Gross Net
我知道我可以在执行 grep 删除单词后手动对“Gross”和“Net”进行 sed 替换,但我知道这样做效率低。
此命令将成为脚本的一部分,该脚本将包含许多其他进程(到目前为止我已经能够做到)。
在我的在线研究中,我知道很多人推荐使用 awk,但是我们还没有在课程中学到这一点。
再次感谢您。我真的很期待从大家的经验中学习。
【问题讨论】:
-
你能举一个你的输入文件的例子吗?
-
剪切怎么样,如果总是在同一个位置。
cut -c1-47 < file -
@Bill 感谢您的回复!我提到的头文件是输入文件。我正在尝试将 --Regular-- 和 --Overtime-- 列标题放入一个单独的文件中,该文件可以任意命名(对于本示例,可能是 file2)。
-
@BMW - 列标题应位于同一位置。我肯定会在cut上一击。出于某种原因,我并没有真正考虑通过计算角色来进行剪辑。谢谢!我想我应该 egrep 行,保存到临时文件,然后从临时文件中剪切?
-
如果您使用剪切,请使用字段计数而不是字符计数。并且不要保存到临时文件;只需使用管道。