Alb*_*lby 3 unix bash command-line multiple-columns
基本上,我想将一个列文件转换为由行数指定的多个列文件.
我不想重新发明轮子.我想在编写自定义脚本之前确保是否有unix命令/或标准方法.
例如,假设我有以下文件:
$cat input.txt
tom
jack
kim
bart
foo
bar
Run Code Online (Sandbox Code Playgroud)
我想把它变成3行文件
$ cat input.txt | my_script --every=3 --delimiter=tab
tom bart
jack foo
kim bar
Run Code Online (Sandbox Code Playgroud)
或具有不同分隔符的2行文件:
$ cat input.txt | my_script --every=2 --delimiter=,
tom,kim,foo
jack,bart,bar
Run Code Online (Sandbox Code Playgroud)
怎么用xargs?
每行两条记录:
$ xargs -n2 < file
tom jack
kim bart
foo bar
Run Code Online (Sandbox Code Playgroud)
每行三条记录:
$ xargs -n3 < file
tom jack kim
bart foo bar
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以paste在 UNIX 中使用命令将文件转换为多列。默认情况下,制表符是分隔符。要更改分隔符,请使用-d选项
命令:将一列文件转换为两列
paste - - < input.txt
Run Code Online (Sandbox Code Playgroud)
输出:
tom bart
jack foo
kim bar
Run Code Online (Sandbox Code Playgroud)
命令:,以分隔符将一列文件转换为两列
paste - - -d, < input.txt
Run Code Online (Sandbox Code Playgroud)
输出:
tom,bart
jack,foo
kim,bar
Run Code Online (Sandbox Code Playgroud)
和awk
awk -v row=2 '{A[(NR-1)%row]=A[(NR-1)%row]$0" ";next}END{for(i in A)print A[i]}' file
Run Code Online (Sandbox Code Playgroud)
输出:
tom bart
jack foo
kim bar
Run Code Online (Sandbox Code Playgroud)
此处指定变量中所需的行数raw。例如:row=3三行。
如果您只想打破特定行中的列,请尝试这样做
cat file | xargs -n2
这里 2 每行包含 2 列,你可以使用你想要的。
| 归档时间: |
|
| 查看次数: |
3631 次 |
| 最近记录: |