2016-06-10 80 views
1

我有一个包含两列数据的文本文件,第一列是站点ID,第二列是值。如果该值等于0,我想将相应的站点ID发送到新文件。如果这个值等于15,我不想做任何事情。将相应站点的值导出到新的文本文件

文本文件:

K5B2 0 
K6B0 0 
K6L4 0 
K7W4 0 
K8B0 0 
K8G2 0 
K8W2 0 
KABE 15 
KACK 15 
KACY 15 
KADW 15 
KAFJ 15 
KAFN 15 
KAGC 15 
KAKQ 15 
KALB 15 
KANP 0 
KAOO 15 
KAPG 15 
KAQW 15 
KART 15 
KASH 15 
KAUG 15 

尝试脚本:

badcheck1=`00z_reingest_out_tmp | awk '{print $2}'` 
badsitescheck=`00z_reingest_out_tmp | awk '{print $1}'` 

if [ ${badcheck1} -eq "0" ]; 
then 
echo "${sites} is fine" 
else 
echo "${badsitescheck}" >> out 
fi 

回答

3

你可以使用这个简单的awk脚本:

awk '$2 == 0 { print $1 > "file.out" }' file 
1

你可以试试:

cat test.txt | awk '$2==0{print$1}' > export.txt 
+0

无用(错误)使用'猫'... – twalberg

0

如果您正在寻找可以添加脚本的东西,可以使用以下方法。当我执行检查时,我经常想要执行多个操作。

for i in $(cat 00z_reingest_out_tmp); do 
    if [[ ${i/#* } = 0 ]]; then 
     echo "${sites} is fine" 
    else 
     echo "${i/% *}" >> out 
done 
  • $()执行命令,并使用作为输入输出至命令
  • $ {I /#*}开始于开始和除去图案(除去第一个字 “*” 和下面的空间 “” )
  • $ {I /%}开始在结束和删除模式(空格 “” 及以下单词 “”)

我希望这有助于。

注意:我不确定您在哪里获得$ {sites},但是我将它留在那里以防您在代码中定义它。

注意:我喜欢@ anubhava上面的单行实现的答案,但它似乎并不完全适合您在脚本示例中想要做的。

相关问题