根据变量(bash脚本)的不同,仅重定向到几行新文件



很抱歉标题太复杂了,但我不知道如何更好地解释

上下文如下:想象一个医院候诊室。每个被录取的人都有姓名、年龄、身份号码、等待时间和优先顺序。

一个文件,称为";patients.txt";,使用以下数据生成:

first_name last_name age identity_number waiting_time_in_seconds priority

(因此,共有六列(。

当有超过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。如果是,则将第3行打印到名为patients.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行输出到临时文件patients.tmp时打印行。将到文件移动到patients.txt

对于更新版本的awk,您可以使用-i标志:

awk -i 'BEGIN { prnt=1 } $6 == "4" || $6 == "5" { print $0 > "patients1.txt";prnt=0 }prnt' patients.txt

相关内容

  • 没有找到相关文章

最新更新