簡體   English   中英

使用awk變量刪除文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM