Shell 批量搜索關鍵詞並保存結果到文件中(數組、循環)


 

#!/bin/bash

keywords=("不需要" "不用謝謝" "xxx" "xxx")

for var in ${keywords[@]}
do
        echo $var
        cat ../corpus.txt | grep $var | wc -l        
        cat ../corpus.txt | grep $var > search_res/$var.txt
done

 

1.Shell 數組
數組中可以存放多個值。Bash Shell 只支持一維數組(不支持多維數組),初始化時不需要定義數組大小(與 PHP 類似)。

與大部分編程語言類似,數組元素的下標由0開始。

Shell 數組用括號來表示,元素用"空格"符號分割開,語法格式如下:

array_name=(value1 ... valuen)

我們也可以使用下標來定義數組:

array_name[0]=value0
array_name[1]=value1
array_name[2]=value2

讀取數組元素值的一般格式是: ${array_name[index]} 

獲取數組中的所有元素
使用@ 或 * 可以獲取數組中的所有元素,例如:

echo "數組的元素為: ${my_array[*]}"
echo "數組的元素為: ${my_array[@]}"

獲取數組長度的方法與獲取字符串長度的方法相同,例如:

echo "數組元素個數為: ${#my_array[*]}"
echo "數組元素個數為: ${#my_array[@]}"

 

2.Shell 流程控制中的for 循環

與其他編程語言類似,Shell支持for循環。

for循環一般格式為:

for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done

寫成一行:

for var in item1 item2 ... itemN; do command1; command2… done;

當變量值在列表里,for循環即執行一次所有命令,使用變量名獲取列表中的當前取值。命令可為任何有效的shell命令和語句。in列表可以包含替換、字符串和文件名。

in列表是可選的,如果不用它,for循環使用命令行的位置參數。

例如,順序輸出當前列表中的數字:

for loop in 1 2 3 4 5
do
    echo "The value is: $loop"
done

輸出結果:

The value is: 1
The value is: 2
The value is: 3
The value is: 4
The value is: 5

順序輸出字符串中的字符:

for str in 'This is a string'
do
    echo $str
done

輸出結果:

This is a string

 

參考:

Shell 數組 | 菜鳥教程

Shell 流程控制 | 菜鳥教程


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM