string - Bash:使用while循环将输入文件解析为输出文件
问题描述
我有一个简单的循环,它逐行读取输入文件(.xyz)并将其回显到输出文件(.gjf)中。但是,我希望它在遇到仅包含“Bonds”的行时终止,以便仅将输入文件的初始部分复制到输出文件中。
我正在为许多输入/输出文件(因此 ${i} 作为文件名)执行此操作,因此复制的行数可能不一样,但在某些时候都会包含带有“Bonds”的行。这就是为什么我需要逐行阅读。
下面的代码将正确地回显到输出文件中,但在遇到“Bonds”时不会退出while循环,而是复制整个输入文件。read -r 的输出不被视为字符串吗?
while read -r LINE ; do
if [[ "$LINE" == "Bonds" ]] ; then
break
else
echo "$LINE" >> "${i}.gjf"
fi
done < "./${i}.xyz"
以下是输入 (.xyz) 文件的示例:
0 2
6 0.097055000 -1.260034000 1.473340000
6 0.336623000 -0.000274000 0.631466000
1 0.279787000 -2.153356000 0.870406000
1 -0.939049000 -1.279769000 1.829917000
1 0.757490000 -1.287905000 2.345029000
Bonds
1 2 S
1 3 S
1 4 S
1 5 S
2 6 S
我只想复制“债券”上方的行。我是 bash 的新手,因此不胜感激。谢谢。
解决方案
推荐阅读
- php - 如何在 Laravel 中访问包含对象的数组
- powershell - 使用 PowerShell 在 Windows Server 2016 中获取为特定用户运行的进程
- file - 如何在机器人框架中逐行将数据附加到文件
- python - sklearn/PCA - 尝试转换高维数据时出错
- javascript - 如何使用 JSDoc 记录 useState 挂钩?
- python-3.x - 如何在不同的情况下用不同的方法编写 Python 类?
- azure - azure blob 存储生命周期是计算时间还是仅计算日期?
- python - 如何使用 sympy 将线性方程作为字符串求解
- python - 从特定的 div 元素中提取 href
- python - 对嵌套字典键进行数字排序