[英]Searching for specific beginning pattern in first lines of files only
我正在搜索包含以特定模式開頭的記錄的文件,但現在遇到文件(錯誤數據)問題,該文件在文件中的該位置包含多個值,這種情況永遠不會發生(它應該與文件中的每個記錄匹配)但有時沒有)。 下面是當前代碼:
echo "Parsing out list of warehouses contained in file set."
( cd $DATA && grep -l '^ 80' * ) >$TEMP/$program.list.whse80.$$
( cd $DATA && grep -l '^ 61' * ) >$TEMP/$program.list.whse61.$$
( cd $DATA && grep -l '^ 68' * ) >>$TEMP/$program.list.whse61.$$
( cd $DATA && grep -l '^ 69' * ) >>$TEMP/$program.list.whse61.$$
( cd $DATA && grep -l '^ 01' * ) >$TEMP/$program.list.whse01.$$
。等等...
發生的情況是,當一個文件包含以61模式(前9個空格)和01模式開頭的記錄記錄時,在61文件和01文件中捕獲了相同的文件名。 我想只以這種方式強制grep每個文件的第一行,因為我還有其他邏輯可以稍后在程序中捕獲混合文件。
在此先感謝您的協助。
例如,使用head僅限制到前n行
head -3 file | grep ...
遍歷文件,您可以在for循環中執行
for f in *; do if [ -f "$f" ]; then head -1 "$f" | grep ...; fi; done
如果要輸出文件名,則此解決方案將無法正常工作,因為head僅提取第一行。 但是,您可以檢查grep狀態並自行報告文件名。
if grep -q pattern; then echo $f fi
或者,您可以使用awk代替grep
for f in *; do if [ -f "$f" ]; then awk 'NR==1 && /pattern/{print FILENAME}' "$f"; fi; done
用您的圖案替換圖案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.