Unix脚本读取特定的行和位置

1 unix

我需要有一个脚本读取进来的文件并检查信息以进行验证.

在要读取的文件的第一行是日期,但是以数字形式.例如:20080923但是在日期之前是其他信息,我需要从位置27读取它.含义第1行位置27,我需要得到那个数字,看它是否大于另一个数字.

我使用grep命令检查其他信息,但我使用特殊字符进行搜索,在这种情况下,日期之前的信息总是不同,所以我不能使用字符进行搜索.它必须由第1行第27位完成.

Jon*_*ler 5

sed 1q $file | cut -c27-34
Run Code Online (Sandbox Code Playgroud)

sed命令读取文件的第一行,cut命令将删除一行中的字符27-34,即您所说的日期.

后来添加:

对于更一般的情况 - 例如,您需要读取第24行,而不是第一行,您需要一个稍微复杂的sed命令:

sed -n -e 24p -e 24q | cut -c27-34
sed -n '24p;24q' | cut -c27-34
Run Code Online (Sandbox Code Playgroud)

-n选项意味着"默认情况下不打印行"; 的24p装置的打印线24; 这24q意味着在处理第24行之后退出.您可以将其保留,在这种情况下sed将继续处理输入,实际上忽略它.

最后,特别是如果您要验证日期,您可能希望将Perl用于整个作业(或Python,或Ruby,或Tcl,或您选择的任何脚本语言).