我试图在unix中执行此操作。例如,假设我有五个以日期命名的文件,并且在每个文件中都有数千个数值(六到十位数字)。现在,让我说我也有一堆数值,我想知道哪个值属于哪个文件。我正在尝试以下面的方式做到这一点,但我如何将所有值放在一个文件中并只是做一个循环从那里。
FILES:
20170101
20170102
20170103
20170104
20170105
代码:
for i in 5555555 67554363 564324323 23454657 666577878 345576867; do
echo $i; grep -l $i 201701*;
done
答案 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