Posted on 2009-08-28 13:45 
Prayer 阅读(1330) 
评论(0)  编辑 收藏 引用  所属分类: 
Shell 
			 
			
		 
		在文件table.list中有如下内容,
cat table.list
    
        
            | ./tempdata/s_job_chain.txt ./tempdata/s_entity_info.txt
 ./tempdata/s_db_info.txt
 ./tempdata/s_job_cost.txt
 ./tempdata/s_datamng_log.txt
 ./tempdata/s_audit_rule.txt
 ./tempdata/s_cnode_stat.txt
 ./tempdata/s_instance_stat.txt
 ./tempdata/h_instance_info.txt
 ./tempdata/s_ds_jobparam.txt
 ./tempdata/s_job_attr.txt
 ./tempdata/h_job_info.txt
 ./tempdata/s_refer_log.txt
 ./tempdata/s_receive_info.txt
 ./tempdata/s_event_obj.txt
 ./tempdata/s_cnode_info.txt
 ./tempdata/s_project_stat.txt
 ./tempdata/s_seq_job.txt
 | 
    
请问一下,有没有一种好的办法截取我需要的字符串,比如第一条记录,记录的长度未知,但我只要字符串“s_job_chain",这是一个表名,是我所需要的。
我有一种方法,代码如下,但我需要一种更好的。简单易懂的。谢谢
    
        
            | for one in `ls ./tempdata -name *.txt` do
 onetab=`echo ${one##*/} | awk -F "." '{print $1}'`
 echo $onetab
 done
 
 
 | 
    
cat ur.txt | xargs -i basename {}
如果不明白就去置顶看shell基础十二篇之find+xargs
awk -F'[/.]' '{print $(NF-1)}' table.list
 
解释,如果用/和.来进行分隔,那个倒数第二个字段就是你需要的表名
如果是文件名
试试
ls ./tempdata/ | awk -F'.' '/\.txt$/{print $1}'