Board logo

标题: [其他] 【已解决】cut 命令:如何添加循环语句,依次截取各列字符 [打印本页]

作者: 思想之翼    时间: 2023-4-18 14:36     标题: 【已解决】cut 命令:如何添加循环语句,依次截取各列字符

本帖最后由 思想之翼 于 2023-4-18 16:44 编辑
  1. cut -b 1 test.txt>001.txt
复制代码
上述cut 命令,截取test.txt第1列,写入001.txt
如何添加循环语句,以实现截取test.txt第1-100列,写入001.txt  002.txt ...   100.txt
作者: idwma    时间: 2023-4-18 14:58

可以参考一下

作者: Batcher    时间: 2023-4-18 15:07

回复 2# idwma


    告诉这个AI它忘了开启变量延迟扩展。
作者: idwma    时间: 2023-4-18 15:28

回复 3# Batcher


    他每次回复细节上都有一点不同,有时候就会加上
作者: newswan    时间: 2023-4-18 16:06

  1. @echo off
  2. setlocal ENABLEDELAYEDEXPANSION
  3. for /l %%a in (1,1,100) do (
  4. set file=00%%a
  5. set file=!file:-3!
  6. cut -b %%a test.txt > !file!.txt
  7. )
复制代码

作者: Batcher    时间: 2023-4-18 16:53

回复 1# 思想之翼


推荐试试 gawk.exe 第三方命令行工具:
http://bcn.bathome.net/s/tool/index.html?key=gawk

test-1.bat
  1. @echo off
  2. cd /d "%~dp0"
  3. gawk "{for(i=1;i<=3;i++){n=sprintf(\"%%03d\",i); print $i >n\".txt\"}}" "test.txt"
复制代码

作者: 思想之翼    时间: 2023-4-24 18:50

本帖最后由 思想之翼 于 2023-4-24 21:41 编辑

回复 6# Batcher
感谢帮助!该gawk代码是按分割
1 1 1 1...1
2 2 2 2...2
若按字节分割
111111...1
222222...2
如何表达?恳望指点。
作者: hfxiang    时间: 2023-4-24 19:31

回复 7# 思想之翼

如果使用gawk,请确保test.txt已保存为ANSI编码

命令行模式(单百分号):
  1. gawk -vFS="" "{for(i=1;i<=NF;i++){n=sprintf(\"%03d\",i); print $i>n\".txt\"}}" "test.txt"
复制代码
脚本模式(双百分号):
  1. gawk -vFS="" "{for(i=1;i<=NF;i++){n=sprintf(\"%%03d\",i); print $i>n\".txt\"}}" "test.txt"
复制代码

作者: terse    时间: 2023-4-24 21:27

就是列转行吧
作者: terse    时间: 2023-4-24 22:10

有没有分隔符不重要,重要的是列数和行数字符一致




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2