微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在linux中如何join2个文件

我有2个文件file_A和file_B。 文件file_A包含文件名,然后在空格之后代码行。 这个代码行可以有任意types的字符说blanks,:等等。它看起来像这样。 请注意,文件中的代码行没有被()包围。 这只是为了说明的目的。

bash $ cat file_A

file_name1 (code line a) file_name1 (code line b) file_name2 (code line c) file_name2 (code line d) file_name2 (code line e)

文件file_B在file_A中包含file_name和频率

bash $ cat file_B

在shell中按名称sorting目录内容包括隐藏文件

在BASH中反转多列文件的sorting顺序

如何在一行或多行中查找具有相同值的行,并使用awk添加

为什么我的工具输出覆盖本身,如何解决

如何使用AWK从string中删除所有小写字符?

file_name1 2 file_name2 3

我想输出为:(频率,文件名,code_line)

2 file_name1 (code line a) 2 file_name1 (code line b) 3 file_name2 (code line c) 3 file_name2 (code line d) 3 file_name2 (code line e)

bash $ join -1 1 -2 1 file_B file_A> file_C

我得到file_C为(我得到连接字段作为第一个字段)

file_name1 2 (code line a) file_name1 2 (code line b) file_name2 3 (code line c) file_name2 3 (code line d) file_name2 3 (code line e)

我如何获得第一场的频率场?

我知道,通过连接,我可以使用-o格式并在输出中提及我想要的字段和顺序。 但是我怎么说,把所有的代码行(可以包含任何东西,所以没有这样的分隔符)如此

谢谢,

Unix Awk数组不打印值

将每N行input放入一个新列

从文本文件删除奇数行或偶数行

AWK中删除空格

Shell命令从文本文件去除^ M个字符

join file_B file_A | awk '{t=$1; $1=$2; $2=t; print}' > file_C

注意join不支持输出格式中指定一个范围的字段,所以下面的内容有点儿怪异,但是在“代码行”中最多支持8个空格,

join -o 1.2,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9 file_B file_A

sed 's#([^ ]*) ([^ ]*) (.*)#$2 $1 $3#g'

注:也许你将不得不摆脱正常的括号后面的空格,使其工作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐