gpt4 book ai didi

BASH:同时并排显示两个文件

转载 作者:行者123 更新时间:2023-11-29 09:05:26 24 4
gpt4 key购买 nike

我正在编写一个 bash 脚本,我想并排打印两个文件。一个文件填充了 IPv4 地址,另一个文件填充了 IPv6 地址。我试过了,

pr -mtw $WIDTH $FILE1 $FILE2

但是它减少了输出。

┌────┤IPV4├─────┬─────────────────┤IPV6├────────────────┐
224.0.0.1 2001:0db8:0000:
192.0.2.128 ff02::1
192.0.2.128 2001:0db8:0000:
192.0.2.128 ::
2001:0db8:0000:
2001:db8:0:0:0:
2001:db8::ff00:
0000:0000:0000:
::1
fe80::
::ffff:192.0.2.
::192.0.2.128

我也试过了,

paste $FILE1 $FILE2  | awk '$1=$1' OFS='\t '

输出是,

┌────┤IPV4├─────┬─────────────────┤IPV6├────────────────┐
224.0.0.1 2001:0db8:0000:0042:0000:8a2e:0370:7334
192.0.2.128 ff02::1
192.0.2.128 2001:0db8:0000:0000:0000:ff00:0042:8329
192.0.2.128 ::
2001:0db8:0000:0000:0000:ff00:0042:8329
2001:db8:0:0:0:ff00:42:8329
2001:db8::ff00:42:8329
0000:0000:0000:0000:0000:0000:0000:0001
::1
fe80::
::ffff:192.0.2.128
::192.0.2.128

我希望输出是这样的

┌────┤IPV4├─────┬─────────────────┤IPV6├────────────────┐
224.0.0.1 2001:0db8:0000:0042:0000:8a2e:0370:7334
192.0.2.128 ff02::1
192.0.2.128 2001:0db8:0000:0000:0000:ff00:0042:8329
192.0.2.128 ::
2001:0db8:0000:0000:0000:ff00:0042:8329
2001:db8:0:0:0:ff00:42:8329
2001:db8::ff00:42:8329
0000:0000:0000:0000:0000:0000:0000:0001
::1
fe80::
::ffff:192.0.2.128
::192.0.2.128

文件 1:

 224.0.0.1
192.0.2.128
192.0.2.128
192.0.2.128

文件 2:

 2001:0db8:0000:0042:0000:8a2e:0370:7334
ff02::1
2001:0db8:0000:0000:0000:ff00:0042:8329
::
2001:0db8:0000:0000:0000:ff00:0042:8329
2001:db8:0:0:0:ff00:42:8329
2001:db8::ff00:42:8329
0000:0000:0000:0000:0000:0000:0000:0001
::1
fe80::
::ffff:192.0.2.128
::192.0.2.128

请注意,每行的开头都有一个空格。有什么想法吗?

最佳答案

使用 awktrGNU paste 命令:-

$ paste file1 file2 | awk -v FS='\t' '{printf("%-15s %s\n",$1,$2)}' | \
awk '{sub(/^/, " ", $0)}1'

224.0.0.1 2001:0db8:0000:0042:0000:8a2e:0370:7334
192.0.2.128 ff02::1
192.0.2.128 2001:0db8:0000:0000:0000:ff00:0042:8329
192.0.2.128 ::
2001:0db8:0000:0000:0000:ff00:0042:8329
2001:db8:0:0:0:ff00:42:8329
2001:db8::ff00:42:8329
0000:0000:0000:0000:0000:0000:0000:0001
::1
fe80::
::ffff:192.0.2.128
::192.0.2.128

您可以用第二个管道优化最后一个管道 awk,但不确定具体该怎么做。否则,这行得通!

关于BASH:同时并排显示两个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40259672/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com