Bash 在shell脚本中,我可以在cut中指定多个输出分隔符吗?
我有一个包含以下数据的文件 abcdefghijklmnopqrst 我需要一个使用命令Bash 在shell脚本中,我可以在cut中指定多个输出分隔符吗?,bash,shell,command,sh,Bash,Shell,Command,Sh,我有一个包含以下数据的文件 abcdefghijklmnopqrst 我需要一个使用命令cut的输出,如下所示 bcd |荷航编号| pq.rst 我需要使用cut在输出中包括分隔符|和 我得到了一个使用此代码的分隔符的输出 cat file.txt |cut -c2-4,11-13,14-15,16-17,18-20 --output-delimiter='|' 作为 荷航bcd号pq rst 我可以通过更改命令中的某些内容来获得两个输出分隔符吗?cut一次只支持一个分隔符,但您可以轻松地用
cut
的输出,如下所示
bcd |荷航编号| pq.rst
我需要使用cut在输出中包括分隔符|
和
我得到了一个使用此代码的分隔符的输出
cat file.txt |cut -c2-4,11-13,14-15,16-17,18-20 --output-delimiter='|'
作为
荷航bcd号pq rst
我可以通过更改命令中的某些内容来获得两个输出分隔符吗?
cut
一次只支持一个分隔符,但您可以轻松地用简单的sed
或Awk脚本替换它
awk '{ print substr($0, 2, 4) "|" substr($0, 11, 13) "."
substr($0, 14, 15) "|" substr($0, 16, 17) "."
substr($0,18, 20) }' file.txt
巧合的是,
cut
一次只支持一个分隔符,但是您可以很容易地用简单的sed
或Awk脚本替换它
awk '{ print substr($0, 2, 4) "|" substr($0, 11, 13) "."
substr($0, 14, 15) "|" substr($0, 16, 17) "."
substr($0,18, 20) }' file.txt
巧合的是,GNU使用的。:
$ sed -r 's/.(.{3}).{6}(.{3})(.{2})(.{2})/\1|\2.\3|\4./' file.txt
bcd|klm.no|pq.rst
使用GNU时:
$ sed -r 's/.(.{3}).{6}(.{3})(.{2})(.{2})/\1|\2.\3|\4./' file.txt
bcd|klm.no|pq.rst
两个cut
s(由Gilez对OP的评论建议):
输出:
bcd|klm.no|pqr.st
有了这样的常规输入,
tr
也可以在没有管道的情况下“回答”这个问题:
tr -s 'a-t' 'b-d|k-m.no|p-r.st' < file.txt
tr-s'a-t''b-d | k-m.no | p-r.st'
注意:tr
无法插入,因此听起来不可能。一般来说,这是不可能的,但欺骗是将答案包含在SET2中,然后挤出其余的 2个cut
s(由Gilez对OP的评论建议):
输出:
bcd|klm.no|pqr.st
有了这样的常规输入,
tr
也可以在没有管道的情况下“回答”这个问题:
tr -s 'a-t' 'b-d|k-m.no|p-r.st' < file.txt
tr-s'a-t''b-d | k-m.no | p-r.st'
注意:
tr
无法插入,因此听起来不可能。一般来说,这是不可能的,但欺骗是将答案包含在SET2中,然后挤出其余的 你不能把它运行两次吗?一次用于第一个分隔符,一次用于第二个分隔符?@gilez是的,你可以。你不能在cut
中运行两次吗?第一个分离器一次,第二个分离器一次?@gilez是的,你可以。