unix - Sed 命令将检查我的文件的第二列并删除匹配的数据
问题描述
我想寻求帮助,我是使用sed的初学者,
我想使用 sed 删除第二列中的字母,我也遇到了标题问题,因为如果它是一个字母,它将删除标题的第二列。该文件以逗号分隔。
address,salary
manila,joan
manila,1111
manila,2222
manila,3334
它将删除 'joan' 行,因此输出应该是-:
address,salary
manila,1111
manila,2222
manila,3334
TIA
解决方案
这更像是一份工作,awk
而不是sed
。尝试awk
像这样使用:
$ awk -F, 'NR == 1 || $2 !~ /[a-zA-Z]/' foo.txt
address,salary
manila,1111
manila,2222
manila,3334
如果您确实需要sed
用于就地编辑,请尝试类似
$ sed -i '1b;/^[^,]*,[^,]*[a-zA-Z]/d' foo.txt
address,salary
manila,1111
manila,2222
manila,3334
推荐阅读
- docker - 如何使用自定义文件名运行 docker-compose
- python - RDFLib + JSON-LD + 命名图:使用@graph 时如何覆盖图名?
- unicode - 如何使用 Inno Setup 保存带有 BOM 文件的 UTF-16
- ajax - 知道在 ajax 中提交了哪个表单
- javascript - 我从 YouTube 频道复制了代码,因为我不工作,但在视频中工作正常。我究竟做错了什么?
- sqlite - SQLite中的普通索引和FTS有什么区别
- python - 尽管我有一个具有特定值的 return 语句,但我的函数返回 None
- pkg-config - 如何在 Windows 10 上使用 vcpkg 安装 pkg-config、sigc++-2.0
- java - JPA @OrderBy 不对关系进行排序
- javascript - 从最大到最小的reactjs映射特定数组