我需要让脚本读取进来的文件并检查信息以进行验证。
在要读取的文件的第一行是日期,但是以数字形式。例如:20080923 但在日期是其他信息之前,我需要从位置27读取它。意思是第1行第27位,我需要得到那个数字,看看它是否大于另一个数字。
我使用grep命令检查其他信息,但我使用特殊字符进行搜索,在这种情况下,日期之前的信息总是不同,所以我不能使用字符进行搜索。它必须由第1行第27位完成。
答案 0 :(得分:5)
sed 1q $file | cut -c27-34
sed
命令读取文件的第一行,cut
命令删除一行中的字符27-34,这就是您所说的日期。
稍后添加:
对于更一般的情况 - 例如,您需要读取第24行,而不是第一行,您需要稍微复杂的sed
命令:
sed -n -e 24p -e 24q | cut -c27-34
sed -n '24p;24q' | cut -c27-34
-n
选项表示'默认情况下不打印行'; 24p
表示打印行24; 24q
表示在处理第24行后退出。您可以将其保留,在这种情况下sed
将继续处理输入,实际上忽略它。
最后,特别是如果您要验证日期,您可能希望将Perl用于整个作业(或Python,或Ruby,或Tcl,或您选择的任何脚本语言)。
答案 1 :(得分:1)
您可以从第1行的第27位开始提取字符,如下所示:
datestring=`head -1 $file | cut -c27-`
您将在$ datestring上执行下一个处理步骤。