Linux 一对多合并文件 file1.txt file2.txt
我想创建一个线程文件,如下所示[使用shell脚本] file3.txt 或Linux 一对多合并文件 file1.txt file2.txt,linux,shell,Linux,Shell,我想创建一个线程文件,如下所示[使用shell脚本] file3.txt 或 awk变量NR是所有输入行的当前行号,FNR是当前文件的行号:NR==FNR仅适用于awk读取的第一个文件中的行。以下是glenn jackman答案的替代版本: awk -v pf=file1.txt 'BEGIN{getline p<pf;OFS=","} {print p,$0}' file2.txt > file3.txt awk-v pf=file1.txt'开始{getline pIt更像是合
awk变量NR是所有输入行的当前行号,FNR是当前文件的行号:NR==FNR仅适用于awk读取的第一个文件中的行。以下是glenn jackman答案的替代版本:
awk -v pf=file1.txt 'BEGIN{getline p<pf;OFS=","} {print p,$0}' file2.txt > file3.txt
awk-v pf=file1.txt'开始{getline pIt更像是合并而不是连接…file1.txt是否始终是一行,在file2.txt中的所有行前面都有一行?仅显示一个输入和输出案例并不能为问题提供足够的定义。是的,file1将始终是一行。我要添加的特定行,以及file2.txt中的所有行,如示例所示e以上感谢您的及时支持。cat
是不必要的,请使用prefix=$(
。这样使用for
将在空格上拆分行,并在每个“单词”前输出前缀每一个都在单独的行中。您可以在末尾执行一次输出:done>file3.txt
,而不需要执行rm
。
05--Nov--2010--Friday 23:24:57,06--Nov--2010--Saturday 8:23:34
06--Nov--2010--Saturday 8:23:34,06--Nov--2010--Saturday 9:56:22
10,05--Nov--2010--Friday 23:24:57,06--Nov--2010--Saturday 8:23:34
10,06--Nov--2010--Saturday 8:23:34,06--Nov--2010--Saturday 9:56:22
#!/bin/bash
rm -f file3.txt
prefix=$(cat file1.txt)
for i in $(cat file2.txt)
do
echo $prefix,$i >> file3.txt
done
awk '{print '`cat file1.txt`' "," $0}' file2.txt > file3.txt
line=`cat file1.txt`;
awk '{print '`echo $line`' "," $0}' file2.txt > file3.txt
awk 'NR==FNR {prefix=$0; next} {print prefix "," $0}' file1.txt file2.txt > file3.txt
awk -v pf=file1.txt 'BEGIN{getline p<pf;OFS=","} {print p,$0}' file2.txt > file3.txt