合并两个文件并使用awk指定字段



我想合并两个文件并输出。

所以file1.txt和file1.txt合并。

但是,file1.txt列被附加到末尾。

$ cat  file0.txt 
Name: vSwitch0    MTU: 1500    Uplinks: vmnic0    Portgroups: VM Network, Management Network
Name: vSwitch1    MTU: 1500    Uplinks: vmnic1    Portgroups: VM Network 2
Name: vSwitch2    MTU: 1500    Uplinks: vmnic2    Portgroups: VM Network 3
$ cat  file1.txt 
vmnic2  nvmxnet3  Down  0  half
vmnic0  nvmxnet3  Up  10000  full
vmnic1  nvmxnet3  Up  10000  full
$ awk 'NR==FNR { temp[FNR]=$2 FS $3 FS $4 FS $5; next }; {print ($0) " " temp[FNR]}' <(sort file1.txt)  <(sort file0.txt)
Name: vSwitch0    MTU: 1500    Uplinks: vmnic0    Portgroups: VM Network, Management Network **nvmxnet3 Up 10000 full**
Name: vSwitch1    MTU: 1500    Uplinks: vmnic1    Portgroups: VM Network 2 **nvmxnet3 Up 10000 full**
Name: vSwitch2    MTU: 1500    Uplinks: vmnic2    Portgroups: VM Network 3 **nvmxnet3 Down 0 half**

我试过了,但是失败了。我想在

下面写点东西但是,我不想使用join或paste..我将只使用awk命令。

Name: vSwitch0    MTU: 1500    Uplinks: vmnic0  **nvmxnet3  Up   10000 full**  Portgroups: VM Network, Management Network 
Name: vSwitch1    MTU: 1500    Uplinks: vmnic1  **nvmxnet3  Up   10000 full**  Portgroups: VM Network 2 
Name: vSwitch2    MTU: 1500    Uplinks: vmnic2  **nvmxnet3  Down 0  half**      Portgroups: VM Network 3 

第二个问题

这可能吗?

cat file1.txt 
vmnic0  nvmxnet3  Up   10000  Full
vmnic1  nvmxnet3  Up   10000  Full
vmnic2  nvmxnet3  Down 0      Half
vmnic3  nvmxnet3  Up   10000  Full
# cat file2.txt 
Name: vSwitch0    MTU: 1500    Uplinks: vmnic0            Portgroups: VM Network, Management Network
Name: vSwitch1    MTU: 1500    Uplinks: vmnic1            Portgroups: VM Network 2
Name: vSwitch2    MTU: 1500    Uplinks: vmnic3, vmnic2    Portgroups: VM Network 3

有可能输出这样的东西吗?

vmnic0  nvmxnet3  Up   10000  Full  Name: vSwitch0  MTU: 1500  Portgroups: VM Network, Management Network
vmnic1  nvmxnet3  Up   10000  Full  Name: vSwitch1  MTU: 1500  Portgroups: VM Network 2
vmnic2  nvmxnet3  Down 0      Half  Name: vSwitch2  MTU: 1500  Portgroups: VM Network 3
vmnic3  nvmxnet3  Up   10000  Full  Name: vSwitch2  MTU: 1500  Portgroups: VM Network 3

将Portgroups替换为您想要添加的文本。

awk '
NR==FNR { temp[FNR]=$2 FS $3 FS $4; next }
{gsub(" Portgroups:", temp[FNR]" Portgroups:"; print}
' <(sort file1.txt)  <(sort file0.txt)

最新更新