linux - 根据性别将名称文件拆分为两个文件
问题描述
我必须编写一个 Shell 脚本来根据性别将文件分成names.txt
两个文件。male_nominee.txt
female_nominee.txt
如果文件male_nominee.txt
或female_nominee.txt
已经存在,则附加内容,否则我们必须制作文件。
names.txt
有这样的文字:
23|Arjun|Male
24|Akshara|Female
17|Aman|Male
19|Simran|Female
我写了以下脚本,但有些地方不对:
#!/bin/bash -x
if [ -f male_nominee.txt ]
then
grep -n "Male" names.txt > male_nominee.txt
else
mkdir -p male_nominee.txt
grep -n "Male" names.txt > male_nominee.txt
fi
if [ -f female_nominee.txt ]
then
grep -n "Female" names.txt > female_nominee.txt
else
mkdir -p female_nominee.txt
grep -n "Female" names.txt > female_nominee.txt
fi
解决方案
我会使用awk
:
awk -F'[|]' '$3 == "Male" { print >> "male_nominee.txt"}
$3 == "Female" { print >> "female_nominee.txt" }' names.txt
告诉它 pipe 是列分隔符,根据第三列的值,将当前行附加到适当的文件中(就像在 shell 中一样,如果文件不存在,>>
重定向 in将创建文件,并附加到awk
现有的。)
推荐阅读
- reactjs - react-chartjs2 管理最大值
- python - 如何从其字符串表示创建 ObjectID [pyarrow]
- python - 如何使用 Python GIO 库根据卷类型卸载
- security - Hashicorp vault 自动解封 KMS 安全性
- css - 合并@media 标签
- numpy - 以 numpy 中的矢量化方式:根据块内的内容有条件地切割数据块(不同大小)
- javascript - 使用 Gatsby JS 和 markdown MDX,如何在 MDX 中渲染 HTML5 动画?
- regex - 使用python限制使用特殊字符
- android - 创建/登录用户后立即出现 Firebase NullPointerException
- python - 是否有一种更简洁的方法可以将需要多个数据框列的函数应用于分组数据?