使用shell脚本从一行或字符串中提取文本



我有以下数据在我的文本文件。我知道如何在shell脚本中遍历行。只是需要帮助理解我如何只取出ABC或TES或HYJ或VVB从下面的字符串中逐行提取。

!abc { xyz: "ABC", queue: "TEST" },
!abc { xyz: "TES", queue: "TEST" },
!abc { xyz: "HYJ", queue: "TEST" },
!abc { xyz: "VVB", queue: "TEST" },

以上数据格式保持不变。

我试过下面的建议

#!/bin/bash
line1="!abc { xyz: "ABC", queue: "TEST" },"
echo $line1
test_data=$(echo $line1 | grep -Eoh '!abc { xyz: ".*?"' | cut -d" -f3)
echo $test_data

对于上面的代码,没有输出任何内容。

期望输出应该是test_data =ABC如果我们这样做"echo $test_data"它应该给我ABC

你好,

$cut -d'"' -f2 file.txt

用分隔符'"'截断第二个字段。

有多种方法可以做到这一点,这里有一个,非常简单:

  1. cat file.txt打印出文件

    的内容
  2. AWK将线划分为两部分,一部分在"; "在它之后还有一个。

  3. 正在使用另一个AWK命令再次将结果输出分成两部分,一部分在","之前。再后面一个

  4. 最后SED命令用于删除双引号">

    cat file.txt | awk -F ";'{print $2}' | awk -F ","‘{打印1美元}| sed - e ' s/,//- e ' s/"美元//

最新更新