如何使用shell脚本对每一行的文件内容进行不同的处理?

50pmv0ei  于 2022-11-16  发布在  Shell
关注(0)|答案(1)|浏览(122)

我有一个文件,里面有这些数据-

view:
  schema1.view1:/some-path/view1.sql
  schema2.view2:/some-path/view2.sql
tables:
  schema1.table1:/some-path/table1.sql
  schema2.table2:/some-path/table2.sql
end:

我必须读取文件并将内容存储在不同的变量中。

viewData=$(sed  '/view/,/tables/!d;/tables/q' $file|sed '$d')
tableData=$(sed  '/tables/,/end/!d;/end/q' $file|sed '$d')

回显$视图数据

view:
  schema1.view1:/some-path/view1.sql
  schema2.view2:/some-path/view2.sql

echo $表格数据
第一个
我需要在dataArray上使用for循环,以便在4个不同的变量中获取所有组件。
假设对于$viewData,循环应该能够像这样打印-

objType=view
schema=schema1
view=view1
fileLoc=some-path/view1.sql
objType=view
schema=schema2
view=view2
fileLoc=some-path/view2.sql

我试过sed和cut命令,但是不能正常工作。我只需要使用shell脚本就可以了。任何帮助都将不胜感激。谢谢!

bfnvny8b

bfnvny8b1#

**备注:**如果您在输入中的:/之间添加一个空格字符,那么您将能够使用支持YAML的工具来可靠地解析它。

给定示例输入,您可以使用此awk生成预期的块:
第一个

相关问题