首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用IFS$'\n‘将-r jq读入多个变量

使用IFS变量和读取命令(read)结合,可以将-r jq的输出读入多个变量中。

在Shell脚本中,IFS(Internal Field Separator)是一个环境变量,用于指定分隔符,通常是空格、制表符和换行符。默认情况下,IFS的值为"空格 制表符 换行符"。

下面是一个使用IFS$'\n'将-r jq读入多个变量的例子:

代码语言:txt
复制
IFS=$'\n' read -r var1 var2 var3 <<< "$(jq -r '.key1, .key2, .key3' input.json)"

解释如下:

  • IFS=$'\n':将IFS变量设置为换行符,表示使用换行符作为字段的分隔符。
  • read -r var1 var2 var3:读取输入行并将值存储在变量var1、var2、var3中。
  • <<< "$(jq -r '.key1, .key2, .key3' input.json)":将jq命令的输出作为输入传递给read命令,jq命令用于从input.json中提取.key1、.key2、.key3的值,并使用换行符分隔。

这样,read命令将会把jq命令的输出按照换行符分隔,并将每个值分别赋给var1、var2、var3变量。

注意:

  • input.json是包含需要提取的值的JSON文件的路径。
  • .key1、.key2、.key3是需要提取的JSON键名,可以根据实际情况进行替换。

这种方法适用于将-r jq输出的多个值赋给不同的变量,并且使用IFS变量指定分隔符。这样可以方便地处理jq命令的输出,并且适用于各种Shell脚本开发场景。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云数据库MySQL版:https://cloud.tencent.com/product/cdb_mysql
  • 云原生应用引擎(TKE):https://cloud.tencent.com/product/tke
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯物联网平台(TIoT):https://cloud.tencent.com/product/iotexplorer
  • 腾讯云移动开发平台(MTP):https://cloud.tencent.com/product/mtp
  • 腾讯云区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云元宇宙(GME):https://cloud.tencent.com/product/gme
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 生信人的自我修养:Linux 命令速查手册(全文引用)

    的内容显示成一行 cat file | xargs -n3 # file的内容每3列一行进行输出 find /ifs/result -name '*.fq.gz' | xargs -n1 -I{} cp...' file1 # 匹配的行写入file2中 awk Awk 是一个强大的文本分析工具,它每次读入一条记录,并把每条记录切分成字段后进行分析。...-v var=value 变量 value 的值赋给程序变量 var,-v 可以多次使用 记录与字段 记录是一次读入的内容,通常是文件的一行,保存在字段变量 0中,记录可以被分割成字段,保存在变量...表达式与操作符 Awk 表达式的符号与 C 语言的类似,基本的表达式有数字,字符串,变量,字段,数组以及函数调用。变量无需声明,它们在首次使用时被初始化为null。...;分隔列,打印第1列,第2列和最后一列,并且打印时以制表符作为列的分隔符 number=10;awk -v n=$number '{print n}' file # number的值被传给了程序变量n

    3.9K40

    第二十九章 : 读取键盘输入

    这里的 options 是下面列出的可用选项中的一个或多个,且 variable 是用来存储输入数值的一个或多个变量名。如果没有提供变量名,shell 变量 REPLY 会包含数据行。...Running thisscript results in this: 我们使用带有 -n 选项(其会删除输出结果末尾的换行符)的 echo 命令,来显示提示信息,然后使用 read 来读入变量 int...正如我们所见到的,这意味着多个由一个或几个空格分离开的单词在输入行中变成独立的个体,并被 read 赋值给单独的变量。这种行为由 shell 变量__IFS__(内部字符分隔符)配置。...这个命令显示成功,但是 REPLY 变量总是为空。为什么会这样?...使用目前已经学过的技巧,有可能编写许多有用的程序,比如说特定的计算程序和容易使用的命令行工具前端。在下一章中,我们继续建立菜单驱动程序概念,让它更完善。

    32610

    生信人的自我修养:Linux 命令速查手册

    的内容显示成一行 cat file | xargs -n3 # file的内容每3列一行进行输出 find /ifs/result -name '*.fq.gz' | xargs -n1 -I{} cp...' file1 # 匹配的行写入file2中 awk Awk 是一个强大的文本分析工具,它每次读入一条记录,并把每条记录切分成字段后进行分析。...-v var=value 变量 value 的值赋给程序变量 var,-v 可以多次使用 记录与字段 记录是一次读入的内容,通常是文件的一行,保存在字段变量 中,记录可以被分割成字段,保存在变量...表达式与操作符 Awk 表达式的符号与 C 语言的类似,基本的表达式有数字,字符串,变量,字段,数组以及函数调用。变量无需声明,它们在首次使用时被初始化为null。...;分隔列,打印第1列,第2列和最后一列,并且打印时以制表符作为列的分隔符 number=10;awk -v n=$number '{print n}' file # number的值被传给了程序变量n

    7.4K22

    《Linux命令行与shell脚本编程大全》第十三章 更多的结构化命令

    单引号转义 2)使用双引号来定义用到单引号的值 在某个值两边使用双引号时,shell并不会将双引号当成值的一部分 13.1.3 从变量读取列表 一系列的值都集中存储在了一个变量中,然后需要遍历变量中的整个列表...所以需要修改IFS的值。 只识别换行符,就需要这么做:IFS=$’\n’。这个语句假如脚本中,告诉bash shell在数据值中忽略空格和制表符。 #!...IFS=$’\n’:;”  换行符、冒号、分号、双引号作为字段分隔符 13.1.6 用通配符读取目录 可以用for命令来自动遍历目录中的文件。进行此操作时,必须在文件名或路径名中使用通配符。...C语言风格的for命令允许为迭代使用多个变量。...循环会单独处理每个变量,可以为每个变量定义不同的迭代过程。 尽管可以使用多个变量,但你只能在for循环中定义一种条件。 例子:   1 #!

    1.7K60

    Shell小结

    显示一下目录下以sh结尾的文件 for file in *[sh] do  ls -lh $file done for ((a=1,b=1; a<=LIMIT; a++, b++)) do  echo -n...=:不相等则为真 -z 字符串:字符串长度伪则为真 -n 字符串:字符串长度不伪则为真 (3)文件测试: -e 文件名:如果文件存在则为真 -r 文件名:如果文件存在且可读则为真 -w 文件名...当我们要真正使用圆括弧和花括弧时(如计算表达式的优先级),则需要在其前面加上转义符(/)以便让shell知道它们不是用于 命令执行的控制所用。...但子shell不能用export把它的变量向上带入父shell。 注意:不带任何变量名的export语句显示出当前所有的export变量。...特殊参数 $*: 代表所有参数,其间隔为IFS内定参数的第一个字元 $@: 与*星号类同。不同之处在於不参照IFS $#: 代表参数数量 $?

    31030

    C++初阶-IO流

    ,也可以分行输入 注意: 如果是字符型和字符串,则空格(ASCII码为32)无法用cin输入,字符串中也不能有空格,回车符也无法读入 如果需要只以\n作为结束符,可以使用getline..."%d", n); char s3[32]; sprintf(s3, "%f", n); } 在C++中,对此问题引入了stringstream类 注意: 使用时需包含头文件sstream,...示例: #include void test_stringstream1() { int a = 12345678; string sa; // 一个整形变量转化为字符串,存储到...类型 cout << sValue << endl; } 结果: 字符串拼接 示例: void test_stringstream2() { stringstream sstream; // 多个字符串放入...s. str(“”)方法底层string对象设置为""空字符串 可以使用s.str()让stringstream返回其底层的string对象 stringstream使用string类对象代替字符数组

    1.3K30

    详解流编辑器 sed 和 编程语言 awk

    (一)sed 简单用法 选项 -e 连接多个编辑命令(直接在命令行模式上进行sed的操作) -f 指定sed脚本文件名(sed的操作写在一个文件里,用的时候 -f filename 就可以按照内容进行...sed操作了) -n 阻止输入行自动输出(只有经过sed处理过的行才显示出来,其他不显示) -r                                 使之支持扩展正则表达式                                                  ...可以使用重定向awk的输出保存到文件中。...(一)awk简单用法 用法示 选项 -F 指定输入记录字段的分隔符,默认使用环境变量IFS的值 -f 从指定文件读取awk_script -v 为awk设定变量 The IFS is a special...(六)更多awk awk不仅是一个命令,它更是一个编程语言 变量 内部变量      awk ' {print NR,$0} ' #给文件加上行号 自定变量 函数 内置函数 自定义函数      awk

    1.2K00

    JSON神器之jq使用指南指北

    --slurp/ -s: 不要为输入中的每个 JSON 对象运行过滤器,而是整个输入流读入一个大数组并只运行一次过滤器。 --raw-input/ -R: 不要将输入解析为 JSON。...--arg name value: 此选项值作为预定义变量传递给 jq 程序。如果您使用 运行 jq --arg foo bar,则foo在程序中可用并具有值"bar"。...--rawfile variable-name filename: 此选项读入命名文件并将其内容绑定到给定的全局变量。...输入字符换行 (ascii 0x0a)、回车 (ascii 0x0d)、制表符 (ascii 0x09) 和反斜杠 (ascii 0x5c) 分别输出为转义 序列\n, \r, 。...如果右侧输出多个值,则仅使用第一个值(兼容性说明:在 jq 1.5 及更早版本中,过去是仅使用最后一个)。

    28.5K30

    命令执行一些特殊作用的字符 | Linux Bypass

    Command Bypass | Linux 特殊字符作用 $ {n}表示输入的第n个参数,0-9不用加{},但是到了10以后就要使用{10} cd 0 ~9表示切换到当前用户根目录~ $ 表示全局变量...* --> 使用上条命令的所有参数 命令 !上一条命令:参数所在位置 --> 使用上一条参数的指定参数加入到现在这条命令中 !历史命令数值 --> 执行 history 中指定对应条数的命令 !...file command < file 输入重定向到 file command >> file 输出以追加的方式重定向到 file n > file 文件描述符为 n 的文件重定向到 file...n >> file 文件描述符为 n 的文件以追加的方式重定向到 file。 n >& m 输出文件 m 和 n 合并。 n <& m 输入文件 m 和 n 合并。...-p|bash 其中:xxd -r -p 某种列格式的纯十六进制转储读入,也可以加上 0x 的前缀 特殊的字符替代方式 echo {PS2} 对应字符 > echo{PS4} 对应字符 + echo

    1.4K30

    SHELL(bash)脚本编程一:变量

    默认值为 空格键 TAB键 回车键产生的字符 #可以用set命令查看当前环境下的所有变量 [root@centos7 tmp]# set|grep IFS IFS=$' \t\n' [root@centos7...declare -x name[=value] #如声明一个只读变量 declare -r name[=value] 以上选项可以使用命令declare +OPTION name撤销变量name的属性...,不能使用内置命令unset进行撤销,不能通过命令declare +r name取消只读属性。...~]# echo $NAME 1 2 3 当有多个变量名时,环境变量IFS用来输入分隔成单词。...* [...]或一个英文字母,多个字符不起作用。pattern省略则表示使用?),则^首字母转换成大写,^^所有匹配字母转换成大写;,首字母转换成小写,,,所有匹配字母转换成小写。

    2.7K40
    领券