linux - 在bash中使用awk检索字符之间的字符串并分配给新变量

标签 linux string bash awk terminal

我是 bash 脚本新手,我正在学习命令的工作原理,我遇到了这个问题,

我有一个文件/home/fedora/file.txt

文件内部是这样的:

[apple] This is a fruit.
[ball] This is a sport's equipment.
[cat] This is an animal.

我想要的是检索“[”和“]”之间的单词。

到目前为止我尝试过的是:

while IFS='' read -r line || [[ -n "$line" ]];
do
    echo $line | awk -F"[" '{print$2}' | awk -F"]" '{print$1}'
done < /home/fedora/file.txt

我可以打印“[”和“]”之间的单词。

然后我想将回显的单词放入变量中,但我不知道该怎么做。

任何帮助我都会感激。

最佳答案

试试这个:

variable="$(echo $line | awk -F"[" '{print$2}' | awk -F"]" '{print$1}')"

variable="$(awk -F'[\[\]]' '{print $2}' <<< "$line")"

或完整

while IFS='[]' read -r foo fruit rest; do echo $fruit; done < file

或者使用数组:

while IFS='[]' read -ra var; do echo "${var[1]}"; done < file

关于linux - 在bash中使用awk检索字符之间的字符串并分配给新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32731207/

相关文章:

java - 如何解析计算器输入字符串

java - 从字符串数组中查找和提取字符串

linux - 从 Artifactory 安装 RPM 包

c++ - 在 C++ 中,可以从动态库中访问外部定义的全局变量吗?

arrays - csh向数组中添加字符串,空格问题

bash - 如何将字符串数组传递给 Bash 脚本并加入该数组?

bash - 如何在bash中获取字符串的第一部分

r - 将 Rscript 中的 bool 值输出到 Bash 变量中

java - 用于 Linux 的硬件中断 API

linux - 为什么 flock 使用描述符或文件