Unix bash切割和grep
我有一个名为db.txt的文本文件.
文件中的一些示例行如下:
然后在我的脚本中,我有以下几行: echo "Enter title:" read TITLE cut -d ":" -f 1 db.txt | grep -iw "$TITLE" | while read LINE do STRING="`echo $LINE | cut -d ":" -f 1`," STRING="$STRING `echo $LINE | cut -d ":" -f 2`," STRING=" $$STRING`echo $LINE | cut -d ":" -f 3`," STRING=" $STRING`echo $LINE | cut -d ":" -f 4`," STRING=" $STRING`echo $LINE | cut -d ":" -f 5`" done 有没有办法从剪切中获取特定字段然后将整行传递到while循环? 例如,如果我进入“哈利波特”,
解决方法
如果你没有使用bash的正则表达式匹配(或者可以使用shell模式匹配),你可以不剪切而没有grep.
我们的想法是逐行读取文件,然后将该行拆分为一个数组. 这是该技术的演示: #! /bin/bash echo "Title:" read title # shopt -s nocasematch # if you want case-insensitive matching while read line ; do # this read takes data from input.txt,see # end of loop IFS=: read -a parts <<< "$line" # this splits the line on ":" into # an array called parts if [[ ${parts[0]} =~ $title ]] ; then # regex matching printf "%s -- %sn" "${parts[1]}" "${parts[2]}" fi done < input.txt (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |