bash - Linux Bash 脚本查找并加入
问题描述
下面是我的示例文件。
使用 AccountInfo(Account) 搜索 FolderStatus(Sub-folder) 上存在的子文件夹。
AccountInfo
#server,Account,status,homefolder
vmftp01,admin01,enable,/home/admin01
vmftp01,admin02,enable,/home/admin02
vmftp01,admin03,enable,/home/admin03
FolderStatus
#account,sub-folder
admin01,/sftp/inbox
admin02,/ftp/inbox
admin02,/sftp/inbox
admin02,/as2/inbox
admin03,/ftp/inbox
admin03,/sftp/inbox
期望的输出:
/home/admin01/sftp/inbox
/home/admin02/ftp/inbox
/home/admin02/sftp/inbox
/home/admin02/as2/inbox
/home/admin03/ftp/inbox
/home/admin03/sftp/inbox
我试过:
join -t 1.2,2.2 file1 file2
有错误:
join: file2:4: is not sorted: admin02,/as2/inbox
解决方案
首先,您的 FolderStatus 文件确实没有排序,但这只是一个问题,因为您的 join 命令行似乎不正确。
尝试
join -t , -1 2 -o 1.4,2.2 AccountInfo FolderStatus
使用 AccountInfo = f2 和 FolderStatus = f1,它以这种方式对我有用(直到可以轻松消除的逗号):
ronald@oncilla:~/tmp$ join -t , -1 2 -o 1.4,2.2 f2 f1
/home/admin01,/sftp/inbox
/home/admin02,/ftp/inbox
/home/admin02,/sftp/inbox
/home/admin02,/as2/inbox
/home/admin03,/ftp/inbox
/home/admin03,/sftp/inbox
“-t”选项指定字段分隔符。“-1 2”选项指定文件 1 中的键是第二列。“-o”标志指定输出格式
推荐阅读
- javascript - 使用 Javascript 修改页面上的一些 href 链接
- wpf - WPF C#如何通过代码创建派生样式
- r - 如何解决 R 代码中的单词重音问题
- eclipse-plugin - 如何获取 IProgressMonitor 的实例?
- vhdl - 为测试台生成具有比率的时钟
- django - 更改一个模型中的字段,同时在管理员中自动在另一个模型中添加条目
- javascript - 如何在 flatpickr-day 元素上添加双击事件
- c++ - 不使用 /NODEFAULTLIB 调用构造函数
- html - 如何动态地将 HTML 元素附加到 Vue.js 中的组件
- excel - 比较具有相同内容但格式不同的 2 个单元格