Bash 在域上用空格连接
可以在第二个字段上连接这两个文件吗? 我正努力从join身上得到任何东西Bash 在域上用空格连接,bash,join,sed,Bash,Join,Sed,可以在第二个字段上连接这两个文件吗? 我正努力从join身上得到任何东西 join -j2 -t "," file1.csv file2.csv 上面的命令没有输出,没有错误 ommitting-t“,”sorta可以工作,但是字段现在很混乱,尽管排序符合我的要求 Academia" "http://www.lackadaisycats.com/comic/1264990398.jpg","Lackadaisy 83,"Lackadaisy Arithmophobia" "http://ww
join -j2 -t "," file1.csv file2.csv
上面的命令没有输出,没有错误
ommitting-t“,”sorta可以工作,但是字段现在很混乱,尽管排序符合我的要求
Academia" "http://www.lackadaisycats.com/comic/1264990398.jpg","Lackadaisy 83,"Lackadaisy
Arithmophobia" "http://www.lackadaisycats.com/comic/1238468042.jpg","Lackadaisy 12,"Lackadaisy
我只是在第二列的基础上努力让join工作。我相信空间正在把事情搞砸
我想我可以将第二个字段中的空格转换为一个uu或删除多余的“Lackadaisy”,但这似乎有点老土
编辑:我删除了第二个字段中的“Lackadaisy”,然后重新运行
join -j2 -t "," file1.csv file2.csv
但仍然没有得到所需的输出:(
file1.csv
"http://www.lackadaisycats.com/comic/1264990398.jpg" ,"Lackadaisy Academia"
"http://www.lackadaisycats.com/comic/1238468042.jpg" ,"Lackadaisy Arithmophobia"
"http://www.lackadaisycats.com/comic/1292845744.jpg" ,"Lackadaisy Backalley"
"http://www.lackadaisycats.com/comic/1257460213.jpg" ,"Lackadaisy Balderdash"
"http://www.lackadaisycats.com/comic/1213771589.jpg" ,"Lackadaisy Bedlamite"
"http://www.lackadaisycats.com/comic/1265228812.jpg" ,"Lackadaisy Bee-line"
"http://www.lackadaisycats.com/comic/1313510695.jpg" ,"Lackadaisy Begorra"
"http://www.lackadaisycats.com/comic/1168262128.jpg" ,"Lackadaisy Benediction"
"http://www.lackadaisycats.com/comic/1190620435.jpg" ,"Lackadaisy Blindside"
"http://www.lackadaisycats.com/comic/1213855098.jpg" ,"Lackadaisy Blitzwagen"
文件2.csv
83 ,"Lackadaisy Academia"
12 ,"Lackadaisy Arithmophobia"
100 ,"Lackadaisy Backalley"
78 ,"Lackadaisy Balderdash"
19 ,"Lackadaisy Bedlamite"
84 ,"Lackadaisy Bee-line"
108 ,"Lackadaisy Begorra"
24 ,"Lackadaisy Benediction"
41 ,"Lackadaisy Blindside"
18 ,"Lackadaisy Blitzwagen"
使用:GNU bash,版本4.3.0(1)-发行版(i686 pc linux GNU)似乎是
file1.csv
中第二个字段后面的空格引起了问题。鉴于您将字段分隔符设置为,
,我不知道有什么方法可以忽略这些尾随空格
一种解决方法是通过传递file1.csv
来消除尾随空格,并将输出提供给via。生成的命令与原始命令非常接近
join -j2 -t "," <(sed 's/\s\+$//' file1.csv) file2.csv
"Lackadaisy Academia","http://www.lackadaisycats.com/comic/1264990398.jpg" ,83
"Lackadaisy Arithmophobia","http://www.lackadaisycats.com/comic/1238468042.jpg" ,12
"Lackadaisy Backalley","http://www.lackadaisycats.com/comic/1292845744.jpg" ,100
"Lackadaisy Balderdash","http://www.lackadaisycats.com/comic/1257460213.jpg" ,78
"Lackadaisy Bedlamite","http://www.lackadaisycats.com/comic/1213771589.jpg" ,19
"Lackadaisy Bee-line","http://www.lackadaisycats.com/comic/1265228812.jpg" ,84
"Lackadaisy Begorra","http://www.lackadaisycats.com/comic/1313510695.jpg" ,108
"Lackadaisy Benediction","http://www.lackadaisycats.com/comic/1168262128.jpg" ,24
"Lackadaisy Blindside","http://www.lackadaisycats.com/comic/1190620435.jpg" ,41
"Lackadaisy Blitzwagen","http://www.lackadaisycats.com/comic/1213855098.jpg" ,18
join-j2-t“,”另一个选项是使用awk
(如果有尾随空格,可以使用awk
的sub
函数删除它们)
- 我们将第二个文件加载到内存中,创建一个数组,对两个文件上的公共列进行索引,并分配第2列的值
- 加载第二个文件后,我们移动到第一个文件,并使用数组值修改最后一列。我们使用
sub
函数删除尾随空格
您的期望输出是什么?期望输出是:“,”Lackadaisy Academy“,82
$ awk 'BEGIN{FS=OFS=" ,"}NR==FNR{a[$2]=$1;next}{sub(/ *$/,"",$NF);$NF=$NF OFS a[$NF]}1' file2 file1
"http://www.lackadaisycats.com/comic/1264990398.jpg" ,"Lackadaisy Academia" ,83
"http://www.lackadaisycats.com/comic/1238468042.jpg" ,"Lackadaisy Arithmophobia" ,12
"http://www.lackadaisycats.com/comic/1292845744.jpg" ,"Lackadaisy Backalley" ,100
"http://www.lackadaisycats.com/comic/1257460213.jpg" ,"Lackadaisy Balderdash" ,78
"http://www.lackadaisycats.com/comic/1213771589.jpg" ,"Lackadaisy Bedlamite" ,19
"http://www.lackadaisycats.com/comic/1265228812.jpg" ,"Lackadaisy Bee-line" ,84
"http://www.lackadaisycats.com/comic/1313510695.jpg" ,"Lackadaisy Begorra" ,108
"http://www.lackadaisycats.com/comic/1168262128.jpg" ,"Lackadaisy Benediction" ,24
"http://www.lackadaisycats.com/comic/1190620435.jpg" ,"Lackadaisy Blindside" ,41
"http://www.lackadaisycats.com/comic/1213855098.jpg" ,"Lackadaisy Blitzwagen" ,18