【问题标题】:How to retrieve all code between two words in shell?如何检索shell中两个单词之间的所有代码?
【发布时间】:2016-04-19 14:14:26
【问题描述】:

我需要你的帮助。

我有一个包含多行的文本文件,我想为每一行提取一个代码。 此代码介于两种模式之间:

1) “隔离”

2) ","

我的 log.txt 示例:

George Thibault 送两个球隔离:x27041992,给某人

Edward Thin 将三台 PC 的 隔离区:m5405051993, 交给美联储

Tommy Dijoux 送一只鞋隔离 : cD001252000, 给 luc

想要的结果在新文件中:

x27041992

m5405051993

cD001252000

有人可以帮帮我吗?

【问题讨论】:

  • 看看sed
  • 我不知道 sed 是否在行级工作?如果它会返回所有代码
  • grep -oP 'x\d{8}' log.txt,也许吧?
  • 嗨@twalberg,很多时候代码不以 x 开头。唯一不变的是代码之前的“qurantine:”和代码之后的“,
  • @Oracleboy97420 sed 附带回答这些问题的手册页。还是您真的希望我们做您的工作?

标签: linux algorithm shell


【解决方案1】:

尝试使用以下 bash 脚本

#!/bin/bash
>output
while read line; do
    for word in $line; do
        if [[ $word == *","* ]]; then
            echo ${word::-1} >> output
        fi
    done
done < gr

注意:使用 shell 循环处理文本文件不是一个好习惯。 read this

【讨论】:

    【解决方案2】:

    匹配隔离区和第一个 , 之间的子字符串,并将所有内容替换为记住的字符串。
    当您不想删除: 时,请更改此命令。

    sed 's/.*quarantine\([^,]*,.*/\1/' log.txt
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-23
      • 1970-01-01
      相关资源
      最近更新 更多