我需要有一個腳本讀取進來的文件和驗證檢查的信息。的Unix腳本讀取特定行和位置
在要讀取文件的第一行是日期,但以數字形式。例如:20080923 但在此之前的日期等信息,我需要從位置27含義線1點的位置27讀它,我需要得到該號碼,看它是否大於另一個號碼。
我使用grep命令檢查其他信息,但我使用特殊字符進行搜索,在這種情況下,信息之前的日期始終是不同的,所以我不能用文字來搜索上。它必須由1個線位置27
感謝來完成。
我需要有一個腳本讀取進來的文件和驗證檢查的信息。的Unix腳本讀取特定行和位置
在要讀取文件的第一行是日期,但以數字形式。例如:20080923 但在此之前的日期等信息,我需要從位置27含義線1點的位置27讀它,我需要得到該號碼,看它是否大於另一個號碼。
我使用grep命令檢查其他信息,但我使用特殊字符進行搜索,在這種情況下,信息之前的日期始終是不同的,所以我不能用文字來搜索上。它必須由1個線位置27
感謝來完成。
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行的27位像這樣:
datestring=`head -1 $file | cut -c27-`
你會執行上$ datestring你的下一個處理步驟。
我應該可能已經添加了 - 或者,使用Perl並在相同的腳本中進行日期驗證,以便將數據截斷。 Python也可以用於這一點。您也可以在單個sed命令中完成所有操作: sed -n -e'1s/^。\ {26 \} \(........ \)。*/\ 1/p'$文件 但是,sed |切割很容易。 – 2008-09-23 17:59:39