[英]Using awk variables to remove files
#!/bin/ksh
grep -v "root" /MCS/usr/dbl/tsk/idle.txt | MESTAID=`awk ' {print $1}'`
grep -e "$MESTAID" MCSTNM.SAV | TTF=`awk ' {print $2}'`
在本例中,假設$TTF = 123 555 666
上面的代碼抓住了用戶的3位數唯一TTF
號,然后我需要使用以下語法將其刪除: rm /path_to_file/TT123.*
但是,當我嘗試在腳本中執行此操作時: rm /path_to_file/TT$TTF.*
它嘗試發出以下命令: rm /path_to_file/TT123 555 666.*
有沒有辦法采用$TTF
變量並使它獨立運行,即:
rm /path_to_file/TT123.*
rm /path_to_file/TT555.*
rm /path_to_file/TT666.*
我希望我的問題很清楚,我不是肯定的程序員。 只是一個試圖編寫簡單腳本以減少日常工作量的人:)任何幫助將不勝感激。
我會嘗試:
echo -n $TTF | xargs -n 1 -d ' ' -I '{}' rm '/path/to/file/TT{}.*'
-n
echo(1)
在末尾禁止換行。
帶有-n 1
xargs(1)
將一次執行一個命令, -d ' '
要求一個空格定界符, -I '{}'
要求用標准輸入元素替換命令初始參數中的{}
。
在將其放置到位之前,先構建一些小的測試用例可能是明智的。 它適用於我的簡單測試用例,但您的參與度更高:
$ touch TT111 TT222 TT333
$ echo -n $TTF | xargs -n 1 -d ' ' -I '{}' rm '/tmp/TT{}'
$
這是薩爾諾德答案的簡化版本:
for x in $TTF; do rm /path/to/file/TT$x.*; done
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.