Linux横向连接文件,每天一个 Linux 命令(79): paste 命令

原标题:每天一个 Linux 命令(79): paste 命令

paste 命令将多个文件的相应行默认以 Tab 分隔符横向连接起来,输出到标准输出。

paste 后可接多个文件,不限于 2 个文件。

如果文件写成连字符 -,表示内容来自标准输入。paste 相对于 join 来说,简单许多,不需要有相同的字段也可按行拼接。

pasete [OPTIONS] [FILES]

3.选项说明 -d,--delimiters=LIST

用指定的域分隔符取代Tab。

-s,--serial

顺序地合并一个文件的所有行到一行

-- help

显示帮助信息并退出

--version

显示版本信息并退出

有两个文件 file1.txt 和 file2.txt,内容如下:

# file1 内容

abc

def

ghi

# file2 内容

123

456

789

012

(1)将文件 file1.txt 的所有行合并到一行。

paste -s file1.txt

abc def ghi

# 指定域分隔符为冒号:

paste -s -d : file1.txt

abc:def:ghi

(2)将多个文件的所有行分别合并为一行。

paste -s file1.txt file2.txt

abc def ghi

123 456 789 012

(3)横向连接两个文件,默认以 Tab 分隔。

paste file1.txt file2.txt

abc 123

def 456

ghi 789

012

# 通过交换文件名可指定列的位置

paste file2.txt file1.txt

123 abc

456 def

789 ghi

012

(4)paste 黏贴的内容(行)从标准输入读取,此时可以使用 - 来指代。例如查看 /etc 下的文件列表,并用 paste 打印成每行显示五个文件名。

ls /etc/ | paste -d: - - - - -

cpi:adjtime:aliases:alternatives:anacrontab

anthy-conf:asound.conf:at.deny:audisp:audit

bash-command-not-found:bash_completion.d:bashrc:blkid:bonobo-activation

...

5.注意事项

如果文件格式是 DOS,文件换行符是 rn ,那么会出现内容覆盖的情况。比如 file1.txt 和 file2.txt 格式是 DOS,paste 这两个文件会出现如下情况:

[root@tencent ~] # paste file1.txt file2.txt

:123

:456

:789

:012

从结果可以看出,来自 file1.txt 的行被 file2.txt 的行覆盖,解决办法是,使用 vim 的末行命令 :set ff=unix 将文本格式改为 Unix。 返回搜狐,查看更多

责任编辑:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值