如果可能,我需要做的是以下 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
谢谢。
答案 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)