bash - Bash 脚本将多行排序为一个块
问题描述
我有一个脚本,它接受用户的输入(医院名称、医院 ID、FAA ID、LAT/LON、城市、州。所有这些信息都以各种方式处理,以不同格式写入多个文件。然后,每个文件都是排序以使新信息按字母顺序排列。我已经完成了脚本,一切正常;但是,我没有编写代码来对一个特定文件进行排序,因为它的格式是代码中的多行代码。下面是我的摘录脚本和发送此信息的文件的摘录。
if [ -z "$FAA" ]; then
sed -i '' "${line} i\\
<Placemark>\\
<name>${HOSP}</name>\\
<description>${CITY}, ${STATE} ${ID}</description>\\
<styleUrl>#style1</styleUrl>\\
<Point>\\
<coordinates>${LON},${LAT},0</coordinates>\\
</Point>\\
</Placemark>\\
" "$dir"/Hospital.kml
else
sed -i '' "${line} i\\
<Placemark>\\
<name>${HOSP}</name>\\
<description>${CITY}, ${STATE} ${ID} ${FAA}</description>\\
<styleUrl>#style1</styleUrl>\\
<Point>\\
<coordinates>${LON},${LAT},0</coordinates>\\
</Point>\\
</Placemark>\\
" "$dir"/Hospital.kml
fi
此代码获取输入变量并将它们放在代码中,然后将代码块插入到底部的 KML 文件中,就在最后 2 行代码之前。${line} 之前已计算以查找倒数第二行。
这是它所在的文件的摘录:
<Placemark>
<name>A_FAKE_HOSP_NAME</name>
<description>FAKE CITY, ST FAKEID</description>
<styleUrl>#style1</styleUrl>
<Point>
<coordinates>-83.12345678,33.123456789,0</coordinates>
</Point>
</Placemark>
<Placemark>
<name>ANOTHER_HOSP_NAME</name>
<description>NEW CITY, ST FAKEID2 FAAID1</description>
<styleUrl>#style1</styleUrl>
<Point>
<coordinates>-83.12345678,33.123456789,0</coordinates>
</Point>
</Placemark>
<Placemark>
<name>FAKE_HOSP</name>
<description>A CITY, ST FAKEID3</description>
<styleUrl>#style1</styleUrl>
<Point>
<coordinates>-84.12345678,33.123456789,0</coordinates>
</Point>
</Placemark>
</Document>
</kml>
我想要完成的是从整个块中取出<Placemark></Placemark>
并找到它将插入到具有数千个条目的目标文件中的位置。理想情况下,代码将获取 $HOSP 并按字母顺序在目标文件中找到它所属的位置,然后将整个块插入到<Placemark></Placemark>
文件中的位置。
我提前感谢任何和所有的帮助或建议。此脚本在 macOS 上执行。
解决方案
推荐阅读
- oracle - Oracle 迭代和集合
- java - CCC 2013 J4 NoSuchElementException?
- python - 使一组 ArgParse 参数可选
- mysql - 需要一个 MySQL 查询来显示有孩子的父母以及没有孩子的父母
- c# - 以线程安全的方式使用不可变类型与以相同方式使用可变类型不同的实际应用是什么?
- mysql - MYSQL 不再使用 MAMP 在 Mac 上启动
- tensorflow - 如何解决 permissionError(13, 'Permission denied') 的问题?我已经以管理员身份运行此命令
- excel - VBA 中唯一字符串的动态数组,由分类帐组成
- java - 无法派生模块描述符:提供程序 {class X} 不在模块中
- java - 使用 jMusic 从 MIDI 文件中读取和弦