我有以下数据在我的文本文件。我知道如何在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用分隔符'"'截断第二个字段。
有多种方法可以做到这一点,这里有一个,非常简单:
-
cat file.txt打印出文件
的内容 -
AWK将线划分为两部分,一部分在"; "在它之后还有一个。
-
正在使用另一个AWK命令再次将结果输出分成两部分,一部分在","之前。再后面一个
-
最后SED命令用于删除双引号">
cat file.txt | awk -F ";'{print $2}' | awk -F ","‘{打印1美元}| sed - e ' s/,//- e ' s/"美元//