我有一个这样的文件:
azg
1234567890
asgz
1234367890
aztyu
1234377890
ast
1234367899
asgassfa
1134367890
我想要创建一个如下所示的输出:
did dialer-label
1234567890 azg
1234367890 asgz
1234377890 aztyu
1234367899 ast
1134367890 asgassfa
好的,我得到了我想要的输出:
printf '%s\t%s\t%s\t%s\n' "Dialer-Label" ,"DID" ,"PBX-Label" ,"Status"
tac checklist.txt | paste - - | tac | column -t
}
现在我想添加 1 个包含 .csv 文件中数据的列。在该 .csv 文件中,我有一个包含数字的列和许多包含该数字参数的列。我需要将我之前设置的 did 列中的数字与 csv 中的数字进行匹配,并得到一个包含该 .csv 中的参数的输出
此时我有:
Dialer-Label ,DID ,PBX-Label ,Status
LABEL1 2223338112
LABEL2 2223335689
LABEL3 2223330299
LABEL4 2223335786
LABEL5 2223335734
我需要将“DID”列中的数字与此 csv 中的数字进行匹配,并且在“PBX-Label”列中,我需要从 csv 的 C 列中获取数据文件
答案1
您可以使用paste - -
并利用来tac
改变顺序。
{
printf '%s\t%s\n\n' "did" "dialer-label"
tac file | paste - - | tac
}
可选择通过管道| column -et
使其准确对齐。
输出:
did dialer-label
1234567890 azg
1234367890 asgz
1234377890 aztyu
1234367899 ast
1134367890 asgassfa
答案2
您可以使用 awk,如下所示:
- 在开始时,打印一个标题
- 对于奇数行,存储标签
- 否则打印行和标签
前任。
awk '
BEGIN {printf "%-12s%s\n\n", "did", "dialer-label"}
NR%2 {label = $0; next}
{printf "%-12d%s\n", $0, label}
' file
did dialer-label
1234567890 azg
1234367890 asgz
1234377890 aztyu
1234367899 ast
1134367890 asgassfa
如果您不关心对齐(或者不介意column
之后通过管道传输),那么使用 sed:
printf '%s\n' dialer-label did | sed -n -e 1G -e 'h;n;G;s/\n/\t/;p' - file
did dialer-label
1234567890 azg
1234367890 asgz
1234377890 aztyu
1234367899 ast
1134367890 asgassfa