当前位置: 首页 > 面试题库 >

在Unix上的文本文件中联接多个字段

寇丰
2023-03-14
问题内容

我该怎么做?

File1 看起来像这样:

foo 1 scaf 3 
bar 2 scaf 3.3

File2 看起来像这样:

foo 1 scaf 4.5
foo 1 boo 2.3
bar 2 scaf 1.00

我想做的是找到 字段 1,2和3 相同时在 File1File2 中同时出现的行。 __

有办法吗?


问题答案:

你可以试试看

awk '{
 o1=$1;o2=$2;o3=$3
 $1=$2=$3="";gsub(" +","")
 _[o1 FS o2 FS o3]=_[o1 FS o2 FS o3] FS $0
}
END{ for(i in _) print i,_[i] }' file1 file2

输出

$ ./shell.sh
foo 1 scaf  3 4.5
bar 2 scaf  3.3 1.00
foo 1 boo  2.3

如果要省略不常见的行

awk 'FNR==NR{
 s=""
 for(i=4;i<=NF;i++){ s=s FS $i }
 _[$1$2$3] = s
 next
}
{
  printf $1 FS $2 FS $3 FS
  for(o=4;o<NF;o++){
   printf $i" "
  }
  printf $NF FS _[$1$2$3]"\n"
 } ' file2 file1

输出

$ ./shell.sh
foo 1 scaf 3  4.5
bar 2 scaf 3.3  1.00


 类似资料:
  • 问题内容: 希望对两个不同的文本文件执行内部联接。基本上,我正在寻找GNU联接程序的内部联接。这样的事情存在吗?如果没有,则or 解决方案将是最有帮助的,但是我的首选是Linux命令。 这是我要做的事的一个例子 文件1: 文件2: 结果: 问题答案: file2 末尾不应该包含吗? 如果是,您仍然可以使用:

  • 问题内容: 我有以下SQL语句。 视图在哪里。 现在,我想添加一个或多个表作为联接,以便我可以在列上进行文本搜索,例如包含员工信息,并且可以与 我已经在表上为列创建了索引,但是由于我将sql语句修改为,因此无法与v_depts一起进行搜索 它给我错误 即使我已经为表中的emp_name列创建了索引。我怎么解决这个问题? emp_name的索引语句 问题答案: 我通常通过实例化它们的结构化XML视图

  • 问题内容: 我需要处理分散在各个目录中的多个文件。我想将所有这些加载到单个RDD中,然后在其上执行map / reduce。我看到SparkContext能够使用通配符从单个目录加载多个文件。我不确定如何从多个文件夹加载文件。 以下代码段失败: 这在第三个循环中失败,并显示以下错误消息: 鉴于我仅提供了两个参数,所以这很奇怪。任何指针表示赞赏。 问题答案: 措辞如何呢? 在Scala中,有两种变体

  • 问题内容: 我无法正常上传多个文件。当我选择x个文件时,它成功完成,但是第一个文件被上传了x次,而其他文件则根本没有被上传。有人能指出我做错了吗? 形成: 处理文件: 问题答案: 如果有人感兴趣的话,可以像这样工作: 如果可能的话,很高兴获得带有Blob对象数组的可行解决方案,而不必要求request.args.get(“ __ UPLOADS”)。

  • 问题内容: 我想使用单个元素上传多个文件。所以我尝试这个例子。 使用CodeIgniter2.0上传多个文件(数组) 这是我的表格 这是我的控制器 这是我的文件上传方法 但它给每一次。有什么问题 问题答案: 我根据@Denmark 更改上传方法。

  • 我是这里的 unix/linux 新手..完全新手。 我想在Unix环境下搜索大(日志)文件。因此,我尝试使用grep命令 然而,它只是快速滚动,我看不到所有的事件。我看到它已经完成了……可能是用管道将“”命令与其他命令连接起来。但我不知道是什么。基本上,我希望能够运行一个命令,查看输出,并在查看找到的结果时自己滚动该输出。 请帮帮我。。