请教文本文件批量处理问题


现在有三十几个文本文件,每个一千多行,有用内容是两个区块,每个区块是三列数字。

1.删除 1-21行
2.保留 22-822行 (记为A区块,3列数字,由tab分割)
3.删除 823-828行
4.保留 829-1629行 (记为B区块,3列数字,由tab分割)
5.将 B区块的第2列 替换掉 A区块的第3列,然后删除B区块

其实就是选取A区块的1、2列和B区块的第2列合并为一个新区块,导出文本文件。

原来只有一两个文本文件的时候都是用 sublime text 手动处理的,现在文件比较多,也不会 awk,sed 什么的,求云游大侠给个脚本!谢谢!

awk sed sublime-text

柚原こDみ 10 years, 3 months ago

建议自己写脚本。使用你熟悉的脚本语言 php shell python 等等。
如果经常需要完成类似任务, 还可以进一步把脚本封装成工具。通过这个过程提高自己

大松井玲奈 answered 10 years, 3 months ago

如果使用 bash,需要假定你的文件名里没有空格等特殊字符。如果使用 zsh 则无妨。


 cd 你的文件所在目录
mkdir -p ../output
for f in *; do
  paste <(sed -n 22,822p "$f"|cut -f1,2) <(sed -n 829,1629p "$f"|cut -f2) > ../output/"$(basename "$f")"
done

生成的文件在上一级 output 目录。

shirley answered 10 years, 3 months ago

Your Answer