小编bel*_*kka的帖子

在两列中打印两个文件

我想在两列中打印两个文件——第一个文件在左侧,第二个文件在右侧。

paste 不做这项工作,因为它只能插入一个字符作为分隔符,所以如果第一个文件行的长度不同,输出将被扭曲:

$ cat file1
looooooooong line
line
$ cat file2
hello
world
$ paste file1 file2
looooooooong line   hello
line    world
Run Code Online (Sandbox Code Playgroud)

如果这是一个添加尾随空格的命令,fmt --add-spaces --width 50问题将得到解决:

$ paste <(fmt --add-spaces --width 50 file1) file2
looooooooong line                                 hello
line                                              world
Run Code Online (Sandbox Code Playgroud)

但我不知道一个简单的方法来做到这一点。

那么如何在不扭曲的情况下水平合并打印多个文件呢?其实,我只是想同时看它们。


UPD:添加尾随空格的命令确实存在(例如,xargs -d '\n' printf '%-50s\n'

但解决方案如

$ paste <(add-trailing-spaces file1) file2
Run Code Online (Sandbox Code Playgroud)

当 file1 的行数少于 file2 时,它不会按预期工作。

command-line paste text-formatting

6
推荐指数
2
解决办法
7547
查看次数

bash 命令替换与变量中字符串命令的行为

$ echo $(echo x; echo y)
x y
$ a='echo x; echo y'
$ echo $($a)  # expect 'x y'
x; echo y
Run Code Online (Sandbox Code Playgroud)
  1. 为什么命令替换会以这种方式运行?
  2. 如何在不使用eval和的情况下对存储在变量中的命令列表执行命令替换bash -c

echo $(eval $a)并且echo $(bash -c "$a")实际上做了我想要的,但我听说使用 eval 经常是解决问题的错误方法,所以我想知道如何在没有这些命令的情况下进行管理(使用bash -c实际上是一样的)

command-line bash command-substitution variable-substitution

4
推荐指数
2
解决办法
3197
查看次数