Phi*_*pos 3 utilities text-processing
有一些工具,例如datamesh
在文件中转置矩阵csv
,但我想基于字符交换行和列。所以一个文件
abcde
fghij
klmn
opqrs
Run Code Online (Sandbox Code Playgroud)
应该成为
afko
bglq
chmq
dinr
ej s
Run Code Online (Sandbox Code Playgroud)
请注意,由于第 3 行较短,因此必须在最后一行插入一个空格。
当然,我可以编写一些 C 程序来做到这一点,但我想我曾经遇到过一个可以做到这一点的工具,但我的搜索引擎无法帮助我找到它。
您可以使用rs
纯转置 ( -T
) 模式下的实用程序来完成此操作 - 如果您首先适当地间隔输入,即
$ sed -e 's/./& /g' -e 's/ $//' file
a b c d e
f g h i j
k l m n
o p q r s
Run Code Online (Sandbox Code Playgroud)
(或者,如果您有 GNU sed,则可以使用sed 's/./ &/2g'
;另一个选项是使用循环sed -E ':a; s/([^ ])([^ ])/\1 \2/; ta'
);然后
$ sed -e 's/./& /g' -e 's/ $//' file | rs -Tng0
afko
bglp
chmq
dinr
ej s
Run Code Online (Sandbox Code Playgroud)
重要的选项是:
-T
纯转置-n
填充空条目-g0
将输出装订线宽度(列间距)设置为零awk
或者,使用空输入字段分隔符和默认输出字段分隔符进行输入拆分:
awk '{$1=$1} 1' FS= file | rs -Tng0
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1942 次 |
最近记录: |