一种情况下包含this单词,句中单词前后要有空格才符合条件,句首单词后有空格,前无空格,句尾单词前有空格后无空格;

还有一种就是只要包含this四个连续字符就算符合条件:一下都不是完美符合条件的,对于该题暂时够用======

  1. solution_1: grep -v 参数排除this,不以单词区分;
  2. solution_2: sed 工具正则删除包含'this'单词的行;
  3. solution_3: awk 工具正则输出包含'this'单词的行;
  4. solution_4: [[ ]] 双括号表达式中使用正则;
  5. solution_5,solution_6,solution_7: 每行的所有单词组成数组,对每个数组元素与'this'比较,包含匹配项则跳出数组遍历,查询下一行

#!/usr/bin/env bash
function solution_1() {
    grep -v "this" nowcoder.txt
    #cat nowcoder.txt | grep -v "this"
}

function solution_2() {
    cat nowcoder.txt | sed '/\s\?this\s\?/d'
}

function solution_3() {
    #cat nowcoder.txt | awk -F" " '{if(! ($0 ~ /\s?this\s?/)) print $0}'
    awk -F" " '! ($0 ~ /\s?this\s?/) {print $0}' nowcoder.txt
}

function solution_4() {
    while read line ; do 
        if [[ "${line}" =~ " this " ]]; then
            continue;
        fi
        echo "${line}"
    done < nowcoder.txt
}

function solution_5() {
    local arr=""
    while read line ; do 
        local result=0
        arr=(${line})
        for ele in ${arr[@]}; do
            if [ "${ele}" = "this" ]; then
                result=1
                break
            fi
        done
        if [ ${result} -eq 0 ]; then
            echo "${line}"        
        fi
    done < nowcoder.txt
}


function solution_6() {
    local arr=""
    while read line ; do 
        local result=0
        arr=(${line})
        for ele in ${arr[@]}; do
            if [ "${ele}" = "this" ]; then
                result=1
                break
            fi
        done
        if [ ${result} -eq 1 ]; then
            continue
        fi
        echo "${line}"        
    done < nowcoder.txt
}

function solution_7() {
    local arr=""
    while read line ; do 
        local result=0
        arr=(${line})
        for ele in ${arr[@]}; do
            if [ "${ele}" = "this" ]; then
                result=1
                break
            fi
        done
        if ((${result} == 0)); then
            echo "${line}"
        fi
    done < nowcoder.txt
}

solution_4