抱歉,标题如此复杂,但我不知道如何更好地解释它
上下文如下:想象一个医院候诊室。每个被录取的人都有名字,姓氏,年龄,身份证号码,等待时间和优先级。
使用以下数据生成一个名为“ Patients.txt”的文件:
first_name last_name年龄identity_number Waiting_time_in_seconds优先级
(因此,有六列)。
当等待的病人超过15个时,应生成一个新文件(称为“ priority.txt”),其中包含那些优先级为4和5的病人。
我知道如果使用[[$(wc -l <Patients.txt)-gt 15]],可以让Bash知道何时有15个以上的患者,但是我如何确定只有优先级4和5的患者才能去到新文件?
谢谢。
使用awk:
awk '$6 == "4" || $6 == "5" { print $0 >> "patients1.txt" }' patients.txt
检查第6个空格定界字段是4还是5。如果是,则将th3行打印到一个名为Patient1.txt的新文件中。
如果要将行移动到新文件:
awk 'BEGIN { prnt=1 } $6 == "4" || $6 == "5" { print $0 >> "patients1.txt";prnt=0 }prnt' patients.txt >> patients.tmp && mv -f patients.tmp patients.txt
当没有5或6输出到临时文件Patient.tmp时打印行。将移至文件至Patient.txt
对于较新版本的awk,可以使用-i标志:
awk -i 'BEGIN { prnt=1 } $6 == "4" || $6 == "5" { print $0 > "patients1.txt";prnt=0 }prnt' patients.txt
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句