bash - 如何在 shell 脚本中创建双引号字符串行数组

标签 bash shell double-quotes

我正在尝试将带有双引号字符串的行拆分为一个数组:

输入.txt:

"ABC" "This is TEST 1" "12.3.0"    
"AC" "This is TEST 221" "123"    
"CX" "This is TEST 16" "123.2"    
"LM" "This is TEST 9000" "123.6.6.1"

我希望每一行的结果是什么:

print $a[0] $a[1] $a[2]

ABC This is TEST 1 12.3.0

如何最好地抓取每行的每个字符串?我正在尝试通过命令行和/或 shell 脚本执行此操作

更新: 为了帮助降低复杂性,我更新了我的“input.txt”文件,如下所示: 输入.txt:

'ABC' 'This is TEST 1' '12.3.0'    
'AC' 'This is "TEST" 221' '123'    
'CX' 'This is TEST 16' '123.2'    
'LM' 'This is TEST 9000' '123.6.6.1'

所有的双引号都被替换为单引号,除了那些带有值的。

最佳答案

假设您正在使用 bash:

IFS='"' a=("ABC" "This is TEST1" "12.3.0")

应该差不多可以用了。索引将关闭,条目为空,但是:

 while IFS='"' read -a a; do 
    echo ${a[1]} ${a[3]} ${a[5]}; done < input

让您完成大部分工作。请记住,这是非常脆弱的。

关于bash - 如何在 shell 脚本中创建双引号字符串行数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27517040/

相关文章:

mysql - 使用 R 在 MySQL 上的临时 JSON 变量中使用双引号

java - 无法使用 Runtime.Exec 传递远程命令 (ssh)

node.js - 如何更改 npm install 的 shell

linux - 具有三重管道和 key 文件的 GPG

java - Jenkins 在配置时间内在作业的执行器上执行 shell(并访问工作区)

python split问题我需要数据输出看起来不同

linux - 将一个文件的内容移动到另一个文件

bash - mvn 命令返回 : [ERROR] The goal you specified requires a project to execute but there is no POM in this directory

linux - 使用 "find"列出所有 c/h/cc 文件但排除符号链接(symbolic link)

Javascript:转义动态内容中的引号