linux - 通过 bash 打印 tsv 文件列中的所有值对
问题描述
我想编写一个小的 shell 脚本来让自己更轻松地完成标记任务。唉,我仍然缺乏这样做的技能。
我有一个如下所示的 news.tsv 文件:
id foo bar text
1 a b lorem
2 c d ipsum
...
50 e f muspi
文本列中的实际条目是冗长的新闻文章。我想一次打印这些文本中的 2 个,直到列中所有可能的对都被打印出来。
在寻找解决方案时,我发现 awk 可能是该任务的正确工具。我知道如何在文本列中打印两个特定条目,例如,
awk -F '\t' 'NR==2 {print $4} NR==3 {print $4}' news.tsv
将打印 lorem 和 ipsum。为了获得所有对,我想我需要一个嵌套的 for 循环,但我无法用 awk 实现它。
我的意大利面尝试看起来像这样:
awk -F '\t' '{for (i=0; i<50; i++){for (j=i+1; j<50; j++) if(i!=j){NR==i {print $4} NR==j {print $4}}}}' news.tsv
我也对其他工具持开放态度。
解决方案
这是你想要的吗?
awk 'NR>1 {print $4; next; print $4}'
推荐阅读
- swiftui - SwiftUI DragGesture 只在一个方向
- python - 从 Python 代码(正则表达式或 AST)字符串中提取所有变量
- lisp - 我是 lisp 的初学者。如何在 LISP 中为 R 关系创建传递函数?
- c# - 在 MvvmCross 中使用“标准”ChangePresentation Hints 时,使用“返回”导航导航到新 ViewModel 的方法是什么?
- rust - 我可以在不包装浮点类型和滥用 BTreeMap 的情况下使用标准库执行二叉树搜索吗?
- python - 如何在 databricks 工作区中使用 python 获取 azure datalake 存储中存在的每个文件的最后修改时间?
- azure - Azure Functions:如何在 Azure 存储队列的绑定表达式中使用 POCO?
- flutter - 选择 TextField 或 TextFormField 时 Flutter 应用程序冻结
- reactjs - 为会员页面设置状态授权时的安全风险
- string - 第 1 阶段引导加载程序打印字符串