我需要像在"行" 11至13中包含003的情况下将文件分开尝试了CSPLIT,但没有运气。
使用awk
尝试:
awk '{if (substr($0, 11, 3)=="003")print>"a.txt"; else print>"b.txt"}' file
示例
例如,考虑此输入文件:
$ cat file
1234567890003keep
other line
我们运行命令:
$ awk '{if (substr($0, 11, 3)=="003")print>"a.txt"; else print>"b.txt"}' file
命令完成后,当前目录中会有两个文件:
$ cat a.txt
1234567890003keep
和:
$ cat b.txt
other line
它如何工作
if (substr($0, 11, 3)=="003")print>"a.txt"; else print>"b.txt"
条件substr($0, 11, 3)=="003"
检查以查看在当前行上,从位置11开始的三个字符是003
。如果它们是当前行将打印到a.txt
:
print>"a.txt"
如果不是,则该行被打印到b.txt
:
print>"b.txt"
使用GREP
grep '^..........003' file >a.txt
grep -v '^..........003' file >b.txt
使用
sed -e '/^..........003/{w a.txt' -e 'd}' file >b.txt