将相应站点的值导出到新的文本文件

时间:2016-06-10 15:19:50

标签: linux bash unix scripting

我有一个包含两列数据的文本文件,第一列是站点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 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

您可以尝试:

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

答案 2 :(得分: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上面针对单行实现的回答,但它似乎与您在脚本示例中尝试的完全不符。