awk - 带有重复行的 awk 合并文件
问题描述
首先,对不起我的英语(这是我第一次使用 StackOverflow)。我正在尝试将两个文件混合在一起,awk
并且我尝试了以下方法:
文件 1:
49:6:2:8:5
46:8:3:6:15
47:8:5:6:104
6:3:10:8:3
48:6:1:10:2
文件 2:
1:admin:admin:00000000A:admin@a:admin:admin
3:b:b:66666666b:b@b.b:bb:bb
4:w:w:22222222w:w@w.w:ww:ww
5:r:r:44444444r:r@r.r:rrr:rrr
6:ga:ga:55555555g:g@g.g:gg:gg
7:e:e:33333333e:e@e.e:ee:ee
8:u:u:77777777u:u@u.u:uu:uu
9:james:lopez:12312312a:jose@gmail.com:jose:perez
10:luois:asd:12312312a:jj@j.j:ju:an
输出:
6:3:10:8:3:b:b
48:6:11:10:2:ga:ga
47:8:5:6:104:u:u
使用的命令:
awk -v OFS=: 'NR==FNR { a[$2]=$0; next }$1 in a { print a[$1],$2,$3}' FS=: File1 File2
预期输出:在文件 1 中,第 2 列和第 4 列是文件 2 的 ID,在文件 2 中,我添加了第 2 列和第 3 列。有些必须在两行或多行中。
6:3:10:8:3:b:b:u:u
48:6:11:10:2:ga:ga:admin:admin
47:8:5:6:104:u:u:ga:ga
49:6:2:8:5:ga:ga:u:u
46:8:3:6:15:u:u:ga:ga
感谢大家。
解决方案
$ awk -F: -v OFS=: 'NR==FNR{a[$1]=$2 OFS $3; next} {print $0, a[$2], a[$4]}' f2 f1
49:6:2:8:5:ga:ga:u:u
46:8:3:6:15:u:u:ga:ga
47:8:5:6:104:u:u:ga:ga
6:3:10:8:3:b:b:u:u
48:6:1:10:2:ga:ga:luois:asd
首先读取第二个文件以创建映射。第一个字段用作键,第二个和第三个字段的内容以 OFS 作为分隔符保存。读取第一个文件时,打印行内容,然后根据第二个和第四个字段作为键从数组中获取内容。
请注意,问题中显示的预期输出与行不匹配48:6:1:10...
,也许您读10
为1
或其他内容。
推荐阅读
- c++ - curl 错误 77((SSL CA 证书问题(路径?访问权限?))
- ios - Xcode Swift 与附近的 IOS 设备通信
- c++ - 为什么静态成员变量需要内联声明而静态成员函数不需要?
- javascript - 更新 youtube 隐私状态正在制作ForKidsModificationNotAllowed 错误
- java - 我无法在 android studio 中获取 firebase 数据值的总和
- kotlin - 如何制作
我试图使编辑文本不可移动,但我不知道如何,请你帮帮我。我只使用相对布局
<EditText android:id="@+id/textinput" android:layout_width="331dp" androi
- laravel-7 - 我有一张考勤表,其中包含 staff_id、absent_year、absent_month、absent_day 作为 laravel 中的主键,更新时我面临以下错误
- swift - macCatalyst 应用程序中的自定义方案 URL 不起作用
- reactjs - 在 forwardRef 回调中使用时,调用 React 钩子 useRef 和 useEffect 给出无效的钩子错误
- maven - 动态加载`buildscript`的本地`maven`存储库路径