Linux

如何將 cut 的輸出通過管道傳輸到 foreach 命令?

  • May 4, 2019

我有我想要的 cut 命令,它可以抓取文件每一行中的第一個單詞。然後,我想將 cut 命令中的每個單詞放入 foreach 中。然後我想在 foreach 的主體中執行一個 grep 命令,以在另一個文件中 grep 查找該單詞。

像這樣的東西:

@array = (cut /tmp/10218.after -f1); 
foreach $word (@lines) { 
  grep $word /tmp/10218.before;
} 

顯然@array 分配不起作用。我該如何解決這個問題?

我敢肯定,有很多方法我只是不知道它們是什麼,或者哪種方法最好或足夠好。

在 bash

while read -r word
do
   grep -q "$word" file.before
   if [ $? -ne "0" ]
   then
       echo "$word not in file"
    fi
done < <(cut -f1 -d" " file.after)

to grep 告訴它保持安靜,然後-q您可以詢問$?是否有匹配01

你會想做更多這樣的事情:

for i in $(cat /tmp/10218.after)
do
   grep $(echo ${i} | cut -f1) /tmp/10218.before
done

如果您想在 grep 失敗時獲得更多花哨並輸出一些東西,您可以執行以下操作:

for i in $(cat /tmp/10218.after)
do
   COUNT=grep -c $(echo ${i} | cut -f1) /tmp/10218.before
   if [[ ${COUNT} -eq 0 ]]
   then
       echo "${i}: Not Found"
   else
       echo "${i}: Found"
   fi
done

引用自:https://unix.stackexchange.com/questions/125197