使用awk变量删除文件

时间:2012-02-02 02:50:20

标签: linux unix ksh aix

#!/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.*

我希望我的问题很明确,我不是程序员,这是肯定的。只是一个人试图写一个简单的脚本来减少他的日常工作流程:)任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

我试试:

echo -n $TTF | xargs -n 1 -d ' ' -I '{}' rm '/path/to/file/TT{}.*'
带有echo(1)

-n会在最后限制换行符。

带有xargs(1)

-n 1将一次执行一个命令-d ' '请求空格分隔符,-I '{}'要求替换{}命令与标准输入元素的初始参数。

在放弃这些测试用例之前先构建一些小测试用例可能是明智之举;它适用于我的简单测试用例,但你的更多参与:

$ touch TT111 TT222 TT333
$ echo -n $TTF | xargs -n 1 -d ' ' -I '{}' rm '/tmp/TT{}'
$ 

答案 1 :(得分:0)

这是sarnold答案的简化版本:

for x in $TTF; do rm /path/to/file/TT$x.*; done