如何根据UNIX中的条件拆分固定位置文件



我需要像在"行" 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

相关内容

  • 没有找到相关文章

最新更新