linux - 使用 Linux shell 中的任何命令提取文本

标签 linux bash shell sed grep

如何从以下文本中提取文本并将其存储到变量中:

05:21-09:32, 14:21-19:30

在这里,我想将 05 存储在一个变量中,21 存储在另一个变量中,09 存储在另一个变量中,依此类推。所有值必须存储在数组或单独的变量中。

我已经尝试过:

k="05:21-09:32, 14:21-19:30"

part1=($k | awk -F"-" '{print $1}' | awk -F":" '{print $1}')                                                                                                                      
part2=($k | awk -F"-" '{print $2}' | awk -F":" '{print $1}')
part3=($k | awk -F"," '{print $2}' | awk -F":" '{print $1}')
part4=($k | awk -F"-" '{print $3}' | awk -F":" '{print $1}')

我需要一个更清晰的解决方案或简短的解决方案。

最佳答案

您可以将read-a数组选项一起使用:

IFS=':-, ' read -ra my_arr <<< "05:21-09:32, 14:21-19:30"

上面的代码将按 :- 和空格分割输入字符串:

$ echo "${my_arr[0]}" "${my_arr[1]}" "${my_arr[2]}" "${my_arr[3]}"
05 21 09 32

关于linux - 使用 Linux shell 中的任何命令提取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37940255/

相关文章:

linux - 无法在 ubuntu 10.10 服务器、EC2 实例中运行 cronjob

linux - 根据扩展标准移动文件的脚本

linux - 如何判断进程是否结束?

linux - Django 服务器找到但 Apache/mod_wsgi 找不到的文件

linux - Ubuntu 上的基本 bash 命令 : wc -l < file1. txt > file2.txt vs wc -l <​​ file1.txt > file1.txt

linux - 如何将用户名附加到文件名中

macos - MAC OS X 10.10.2 中 top 命令中的 CMPRS 是什么?

perl - 如何使用 Perl 或 shell 以非递归方式迁移目录?

linux - 如何在nginx中运行编译后的代码或脚本

regex - grep --ignore-case --only