[英]How to apply a awk command to a certain number of files?
我有X個文件,我有以下命令:
awk ' /'$awk_value'/ {split(FILENAME,a,"-");print a[2]"-"a[3]"-"a[4]","$2","$3}' /xxx/xxx/all_my_files > /xxx/xxx/xxx/TEST.txt
但是例如,如果我有120個文件...我如何僅將此命令應用於最后七個文件?
您可以使用tail
命令,然后使用xargs
將輸出用作參數列表。
ls /xxx/xxx/my_files*.txt | tail -7 |
xargs awk -v awk_value="$awk_value" '$0 ~ awk_value {split(FILENAME,a,"-");print a[2]"-"a[3]"-"a[4]","$2","$3}' > /xxx/xxx/xxx/TEST.txt
假設“后7個”基於ls
命令可以產生的順序(例如,按文件名排序,按修改時間排序)。
還要注意使用-v
選項將shell變量轉換為awk
變量,而不是使用串聯方法(如果$awk_value
包含空格,則該方法$awk_value
-您應始終雙引號以防止出現這種情況) )。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.