Unix在bash脚本中添加grep选项

tfreiner

在bash脚本中,我需要添加一个grep选项以在命令行中接受,以仅从与模式匹配的文件中读取单词。提示用户输入书籍,作者,出版者和出版年份,并且列表以book1〜author1〜pub1〜date1格式存储在文件簿中,每组都在单独的行中。如果在命令行中传递了“ print”(bookinfo打印),则文件“ books”的内容将被放入Book:book1(\ n)作者:author1 ect中的book_print文件中。格式。我想做的是添加一个grep选项,以便在命令行中使用-f选项指定一个字符串时,只有“ books”文件中包含该模式的行才会放入“ book_print”文件中。例如,如果命令是“ bookinfo -f“ author2””,则仅“ books”中的行 包含author2的内容将被放入book_print文件中。(bookinfo是脚本的名称)

这是我到目前为止所拥有的。我启动了-f选项代码,但不知道从这里开始。

#!/bin/bash
n=${1:-1}
#while getopts f name
#do
#       case $name in
#               f)dopt=1;;
#               *) echo "Invalid arg";;
#       esac
#done
if [[ $1 == "print" ]]
then
    printf "Booktitle: \t\t %s\n" `awk -F '~' '{print $1}' books` >> book_print
    printf "Author(s): \t\t %s\n" `awk -F '~' '{print $2}' books` >> book_print
    printf "Publisher: \t\t %s\n" `awk -F '~' '{print $3}' books`  >> book_print
    printf "Year of Publication: \t %s\n" `awk -F '~' '{print $4}' books` >> book_print
else
    for ((i = 1; i < n + 1; i++))
    do
        echo -n "Booktitle: " 
        read  b
        book=$b
        echo -n $book >> books
        echo -n "~" >> books
        echo -n "Author(s): "
        read a
        author=$a
        echo -n $author >> books
        echo -n "~" >> books
        echo -n "Publisher: "
        read  p
        publisher=$p
        echo -n $publisher >> books
        echo -n "~" >> books
        echo -n "Year of publication: "
        read y
        year=$y
        echo $year >> books
    done
fi

编辑-我将while循环代码更改为以下代码:

while getops ":f" opt;
do
    case $opt in
        f)
            grep "$OPTARG" books
            ;;
        *)
            echo "Invalid argument."
            ;;
     esac
done

我的图书文件包含A〜B〜C〜D和E〜F〜G〜H行。当我运行命令./bookinfo -f“ A”时,将显示整个工作簿文件,而不仅仅是包含A的行。

雏鸟

看来您正朝正确的方向前进,这是您需要的:

#!/bin/bash

while getopts "f:" opt;
do
  case $opt in
    f)
      echo "Found pattern: $OPTARG"
      ;;
    *)
      echo "Wrong arg"
      # Call the usage function here
  esac
done

您可能需要阅读本getops教程,以进一步了解getops的工作原理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Unix在bash脚本中添加grep选项

来自分类Dev

重命名UNIX bash脚本中的csv选项卡

来自分类Dev

如何在 bash 脚本中添加 unix/linux 用户

来自分类Dev

如何在bash脚本中添加getopt选项

来自分类Dev

bash脚本中grep单行的shell脚本

来自分类Dev

在bash脚本中添加标志

来自分类Dev

Unix Bash Shell脚本中的惰性匹配

来自分类Dev

在我的Powershell脚本中添加-Recurse选项

来自分类Dev

bash脚本中的grep找不到项目

来自分类Dev

Bash脚本:从文件中打印grep行

来自分类Dev

了解bash脚本中的grep模式

来自分类Dev

bash脚本中的grep和mysql变量

来自分类Dev

bash脚本中的grep无法正常工作

来自分类Dev

bash脚本执行中的rsync未知选项

来自分类Dev

BASH grep脚本

来自分类Dev

BASH grep脚本

来自分类Dev

Bash 脚本 - 从文件中添加值并减去

来自分类Dev

如何在 unix shell 脚本中为日期添加时间?

来自分类Dev

编写bash脚本以在UNIX中运行matlab程序?

来自分类Dev

给定时间后在Unix bash中停止脚本

来自分类Dev

Grep方括号,Unix bash

来自分类Dev

Grep方括号,unix bash

来自分类Dev

在脚本中添加一些空运行选项

来自分类Dev

grep输出仅在bash脚本中打印一行

来自分类Dev

在bash脚本中从grep输出扩展环境变量

来自分类Dev

grep输出仅在bash脚本中打印单行

来自分类Dev

如何在bash脚本中为unicode grep

来自分类Dev

bash脚本中“ grep -Ff”未用颜色突出显示模式

来自分类Dev

Unix中的grep命令