从文件执行bash循环脚本

时间:2017-06-30 20:31:54

标签: bash unix while-loop grep echo

我试图在unix中执行此操作。例如,假设我有五个以日期命名的文件,并且在每个文件中都有数千个数值(六到十位数字)。现在,让我说我也有一堆数值,我想知道哪个值属于哪个文件。我正在尝试以下面的方式做到这一点,但我如何将所有值放在一个文件中并只是做一个循环从那里。

FILES:

20170101
20170102
20170103
20170104
20170105

代码:

for i in 5555555 67554363 564324323 23454657 666577878 345576867; do 
    echo $i; grep -l $i 201701*; 
done

3 个答案:

答案 0 :(得分:2)

或者,为什么要循环呢?如果你有一个包含所有数字的文件(比如numbers.txt,你可以找到每个包含的日期文件以及简单的

grep -nH -w -f numbers.txt 201701*

-f选项只是告诉grep使用文件numbers.txt中包含的值来搜索匹配201701*的每个文件。 -nH选项分别列出与每个匹配关联的行号和文件名。正如Ed在下面指出的那样,-w选项确保grep只选择包含所搜索的整个单词的行。

答案 1 :(得分:1)

您也可以使用while循环执行此操作,如果您将其创建为@Barmar建议,则可以从文件中读取:

while read -r i; do
    ...
done < numbers.txt

答案 2 :(得分:0)

将值放在文件// Script to shuffle question in a Google Form when the questions are in separate sections function shuffleFormSections() { getQuestionID(); createNewShuffledForm(); } // Get question IDs function getQuestionID() { var form = FormApp.getActiveForm(); var items = form.getItems(); arrayID = []; for (var i in items) { arrayID[i] = items[i].getId(); } // Logger.log(arrayID); return(arrayID); } // Shuffle function function shuffle(a) { var j, x, i; for (i = a.length; i; i--) { j = Math.floor(Math.random() * i); x = a[i - 1]; a[i - 1] = a[j]; a[j] = x; } } // Shuffle IDs and create new form with new question order function createNewShuffledForm() { shuffle(arrayID); // Logger.log(arrayID); var newForm = FormApp.create('Shuffled Form'); for (var i in arrayID) { arrayID[i].getItemsbyId(); } } 中并执行:

numbers.txt