【问题标题】:How can i grep a nearer word from a file?我如何从文件中 grep 一个更接近的单词?
【发布时间】:2010-02-01 11:22:17
【问题描述】:

如何从文件中 grep 一个更接近的单词?

例如

04-02-2010  Workingday
05-02-2010  Workingday
06-02-2010  Workingday
07-02-2010  Holiday
08-02-2010  Workingday
09-02-2010  Workingday

我将以上数据存储在文件“feb2010”中,

通过这个推荐,我将日期存储在一个变量中 date=date '+%d-%m-%Y'

如果日期是 06-02-2010 ,我想 grep “06-02-2010 工作日”

并希望将字符串工作日存储在变量中

  • 我该怎么做?
  • 还有其他选择吗?

【问题讨论】:

标签: linux shell grep


【解决方案1】:
daytype=`grep $date feb2010 | cut -c13-`

grep 输出该行,然后cut 切断该行第 13 个字符之前的所有内容。 (另一种可能是cut -f3 -d' ',它输出第二个空格之后的字段。)结果存储在变量daytype中。

这假定日期在文件中只出现一次。

【讨论】:

  • $2 使用 awk 可能会更好。或剪切 -f2 -d" "
  • 当然,引号之间有两个空格。是的,你是对的。
【解决方案2】:
#! /bin/bash

grep `date '+%d-%m-%Y'` feb2010 |
while read date type; do
  echo $type
done

【讨论】:

    【解决方案3】:

    使用 bash 外壳

    #!/bin/bash
    mydate=$(date '+%d-%m-%Y')
    while read -r d day
    do
        case "$d" in
            "$mydate"*) echo $day;;
        esac
    done < feb2010
    

    【讨论】:

      【解决方案4】:
      type=($(grep $date feb2010))    # make an array
      type=${type[1]}                 # only keep the second element
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-31
        • 1970-01-01
        • 2011-02-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多