![如何搜索文件的字符串开头并保存变量](https://linux22.com/image/89468/%E5%A6%82%E4%BD%95%E6%90%9C%E7%B4%A2%E6%96%87%E4%BB%B6%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%BC%80%E5%A4%B4%E5%B9%B6%E4%BF%9D%E5%AD%98%E5%8F%98%E9%87%8F.png)
我正在尝试找到一种在文件中搜索字符串的方法,它需要通过搜索然后文件来工作,如果文件中的任何行以我正在搜索的内容开头,则将整行保存为变量,以便我可以稍后使用它来启动另一个命令。
我已经在 python 中尝试过了,但我想在 bash 中找到一种方法
def f(inputpara,substringpara):
temp_log=""
for item in inputpara.split("\n"):
if substringpara in item :
temp_log=item.strip()
return temp_log
谢谢我能够让它工作
IFS=$'\n' lines=( $(grep 'string*' textout.txt) )
for i in "{lines[@]}"
do
echo ${lines[@]}
done
答案1
用于grep
查找行开头的字符串和一个数组来保存结果:
IFS=$'\n' lines=( $(grep '^string' file.txt) )
grep '^string' file.txt
string
查找文件行开头的字符串file.txt
数组
lines
包含匹配的行,IFS=$'\n'
使每行成为数组元素
现在您可以使用常规数组操作迭代结果。
例如,要查找找到的行数:
${#lines[@]}
第一个元素:
${lines[0]}
第二个元素:
${lines[1]}
使用循环迭代元素for
:
for i in "{lines[@]}"; do ....; done