grep at the multiple files,然后剪切那些文件,然后剪切另一个文件,然后在这两个文件之间进行区分

时间:2015-09-23 15:39:43

标签: unix grep diff cut

如果可能,我需要做的是以下 3个单行操作

1)grep -h A1234 BATCHFILE.201509* | cut -c 38-49 > file1.out

(注意:这里我使用':'分隔符,因为有许多BATCHFILE.201509xxxx文件,grep返回:

BATCHFILE.2015091915: ..............
BATCHFILE.2015091918: ..............
BATCHFILE.2015091922: ..............

所以,我在':'之后的结果中切换了38到49的字符。)

2)然后我需要在文件中剪切38到49的字符" WORKFILE.IN":

cut -c 38-49 WORKFILE.IN > file2.out

3)然后我需要找到提取的2个文件之间的差异:

diff file1.out file2.out

谢谢。

1 个答案:

答案 0 :(得分:0)

grep -h A1234 BATCHFILE.201509* | cut -c 38-49 > file1.out && cut -c 38-49 WORKFILE.IN > file2.out && diff file1.out file2.out

从技术上讲,只有一条线。 grep的-h选项将禁止在搜索多个文件时输出文件名,&&将链接命令,以便它们仅在前一个完成时运行。

但我仍然怀疑需要1行。带有步骤/变量的简单shell脚本可能更好/更容易理解

使用匿名管道进行差异

diff <(grep -h A1234 BATCHFILE.201509* | cut -c 38-49) <(cut -c 38-49 WORKFILE.IN)