bashshell如何在找到匹配模式后将特定于文件的内容快速转换为另一个文件
我希望得到如下结果:bashshell如何在找到匹配模式后将特定于文件的内容快速转换为另一个文件,bash,shell,awk,sed,Bash,Shell,Awk,Sed,我希望得到如下结果: >cat file1.txt aa bb ccc dd ee fff >cat file2.txt 1 2 3 file1.txt中的空格将替换为file2.txt中的数字。直接使用awk aa1bb ccc2dd ee3fff 简要说明 NR==FNR{a[NR]=0;next}:将文件2中的每条记录存储到数组a sub(/\/,a[FNR]):用文件2中的a[FNR]替换空格,其中FNR将是文件2中的记录编号 追加的1将打印文件2中处理的每一行 通过a
>cat file1.txt
aa bb
ccc dd
ee fff
>cat file2.txt
1
2
3
file1.txt中的空格将替换为file2.txt中的数字。直接使用
awk
aa1bb
ccc2dd
ee3fff
简要说明
:将文件2中的每条记录存储到数组aNR==FNR{a[NR]=0;next}
:用文件2中的sub(/\/,a[FNR])
替换空格,其中FNR将是文件2中的记录编号a[FNR]
- 追加的
将打印文件2中处理的每一行1
- 通过awk
awk
<
aa1bb
ccc2dd
ee3fff
简要说明
:将文件2中的每条记录存储到数组aNR==FNR{a[NR]=0;next}
:用文件2中的sub(/\/,a[FNR])
替换空格,其中FNR将是文件2中的记录编号a[FNR]
- 追加的
将打印文件2中处理的每一行1
$ awk 'NR==FNR{a[NR]=$0;next}{sub(/\ /,a[FNR])}1' file2 file1
aa1bb
ccc2dd
ee3fff
$paste此功能:
$ awk 'NR==FNR{a[NR]=$0;next}{sub(/\ /,a[FNR])}1' file2 file1
aa1bb
ccc2dd
ee3fff
$paste粘贴
+
方法:
$ paste <(cut -d " " -f1 file1.txt) file2.txt <(cut -d " " -f2 file1.txt) | tr -d $'\t'
aa1bb
ccc2dd
ee3fff
输出:
paste file1.txt file2.txt | awk '{ print $1$3$2 }'
粘贴
+awk
方法:
$ paste <(cut -d " " -f1 file1.txt) file2.txt <(cut -d " " -f2 file1.txt) | tr -d $'\t'
aa1bb
ccc2dd
ee3fff
输出:
paste file1.txt file2.txt | awk '{ print $1$3$2 }'
使用bash while read循环
aa1bb
ccc2dd
ee3fff
读取时-u3 a b;read-u4n;做
回声“$a$n$b”
在读取循环时使用bash完成3
aa1bb
ccc2dd
ee3fff
读取时-u3 a b;read-u4n;做
回声“$a$n$b”
完成3感谢您的帮助~感谢您的帮助~如果您使用paste-d”“…
您可以将管道放到tr
如果您使用paste-d”“…
您可以将管道放到tr