bash在每行文件中搜索字符串

Jos*_*ble 14 string bash file-io

我正在尝试一个看似非常简单的任务:使用bash搜索文件中的字符串,如果它们存在,则将它们输出到另一个文件.它可能是时差,但这应该工作:

#!/bin/bash

cnty=CNTRY

for line in $(cat wheatvrice.csv); do
    if [[ $line = *$cnty* ]]
    then
        echo $line >> wr_imp.csv
    fi
done
Run Code Online (Sandbox Code Playgroud)

我也尝试了这个完整性:

#!/bin/bash

cnty=CNTRY

for line in $(cat wheatvrice.csv); do
    case $line in 
    *"$cnty"*) echo $line >> wr_imp.csv;;
    *) echo "no";;
    esac
done
Run Code Online (Sandbox Code Playgroud)

两者都输出所有内容,无论该行是否包含CNTRY,我都是从看似可靠的来源复制/粘贴的,所以显然有一些关于bash-ness的简单方法,我很遗憾?

Ign*_*ams 30

不要使用bash,请使用grep.

grep -F "$cnty" wheatvrice.csv >> wr_imp.csv
Run Code Online (Sandbox Code Playgroud)

  • ......什么? (4认同)