shell - 使用 shell 脚本从 unix 中的文件中提取信息

标签 shell unix

我有一个包含一些数据的以下文件

name:Mark
age:23
salary:100

我只想读取姓名、年龄并分配给 shell 脚本中的变量

我怎样才能实现这个目标

我能够通过使用下面的脚本而不是特定数据来真实所有文件数据

#!/bin/bash

file="/home/to/person.txt" 

val=$(cat "$file")

echo $val  

请提出建议。

最佳答案

您可以只运行一个 read 来读取单次调用的输出,而不是运行多个 grepbash 循环awk:

read age salary name <<< $(awk -F: '/^age/{a=$2} /^salary/{s=$2} /^name/{n=$2} END{print a,s,n}' file)

结果

echo $age
23
echo $salary
100
echo $name
Mark

如果 awk 脚本看到年龄,则会将 a 设置为该年龄。如果它看到工资,则会将 s 设置为工资。如果它看到一个名称,则会将 n 设置为该名称。在输入文件的末尾,它输出它所看到的内容,供 read 命令读取。

关于shell - 使用 shell 脚本从 unix 中的文件中提取信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41034817/

相关文章:

linux - 验证来自 bash 的输入

c - 试图找出我可以打开的最大进程数是多少

unix - 有没有像 shm_open() 这样没有文件名的东西?

shell - Vagrant 配置 shell 与 puppet 与 Chef

c++ - 为 shell 输出重定向创建文件

PHP - 如何保持命令 shell 打开以执行多个命令?

bash - shell脚本每天用时间戳创建文件夹并推送时间戳生成的日志

shell - 如何编写一个 shell 脚本来删除错误目录中的解压文件?

linux - 实现Java数据分析工具时的Bash错误

macos - 如何使用 Mac OS X Finder 的点击界面访问 Unix 根目录或/usr 目录?