我正在尝试创建一个报告,它从原始的源文件中分解不同的依赖文件,然后将其输出到一个包含列的报告中。到目前为止,我可以获得要生成的文件列表,但第四列是唯一具有多个值的列,下面是我得到的结果:
file='foo.rcf'
gen_file='foo2.rcf'
fs_file='foo3.rcf'
item_file='foo4.rcf
foo5.rcf
foo6.rcf
foo7.rcf'
paste <(printf %s "$file |") <(printf %s "$fs_file |") <(printf %s "$gen_file |") <(printf "%10s\n""$item_file")输出:
foo.rcf | foo3.rcf | foo2.rcf | foo4.rcf
foo5.rcf
foo6.rcf
foo7.rcf我希望能够输出的东西是这样的:
foo.rcf | foo3.rcf | foo2.rcf | foo4.rcf
| | | foo5.rcf
| | | foo6.rcf
| | | foo7.rcfbash解决方案会很棒,但我现在真的在寻找任何解决方案。
发布于 2020-02-26 03:04:12
使用column。首先使用paste,使用分隔符连接各行,然后使用column对输出进行列化,其中字段由分隔符分隔:
file='foo.rcf'
gen_file='foo2.rcf'
fs_file='foo3.rcf'
item_file='foo4.rcf
foo5.rcf
foo6.rcf
foo7.rcf'
paste -d'|' <(
printf %s "$file") <(
printf %s "$fs_file") <(
printf %s "$gen_file") <(
printf %s "$item_file") |
column -t -s '|' -o ' | '将输出:
foo.rcf | foo3.rcf | foo2.rcf | foo4.rcf
| | | foo5.rcf
| | | foo6.rcf
| | | foo7.rcf发布于 2020-02-26 02:37:14
您可以使用awk:
file='foo.rcf'
gen_file='foo2.rcf'
fs_file='foo3.rcf'
item_file='foo4.rcf
foo5.rcf
foo6.rcf
foo7.rcf'
# Lets concatenate the string with separators:
printf "$file|$fs_file|$gen_file|$item_file" |
# Sending modified string to awk with pipe---^
# awk can split it with -F parameter and insert tabs between the chunks.
awk -F'|' 'NR==1 {
print $1"\t\t|\t"$2"\t|\t"$3"\t|\t"$4
} NR>1 {
print "\t\t|\t\t\t|\t\t\t|\t"$1 }'
# -F defines a separator, NR is line number.输出:
foo.rcf | foo3.rcf | foo2.rcf | foo4.rcf
| | | foo5.rcf
| | | foo6.rcf
| | | foo7.rcfhttps://stackoverflow.com/questions/60400119
复制相似问题