linux命令对文件操作 每隔固定行抽取一行

本文介绍了一种利用awk命令处理大型文件的方法,通过每隔特定行数抽取数据来拆分文件,适用于创建训练集和验证集。示例展示了如何设置awk命令以实现这一目标。

需求:有一个很大的文件想要每隔一定的行数,抽取出一行。经常应用于将文件拆成训练集和开发集。

    awk '{if (NR%1333 == 0)  print $0; }' train.all > valid.en
    awk '{if (NR%1333 != 0)  print $0; }' train.all > train.en

注:这里是每隔1333行就抽取一条数据作为valid.en文件的内容,可以根据需要进行修改。

### Linux 文本处理命令及其用法 #### sed 流编辑器 `sed` 是一种流编辑器,主要用于解析和转换文本。通过脚本编写可以实现自动化的文本修改工作。 ```bash echo "hello world" | sed 's/hello/hi/' ``` 此命令会将输入字符串中的 `hello` 替换为 `hi`[^1]。 #### awk 抽取与报表生成工具 作为功能强大的文本处理程序,`awk` 可以读文件并按行处理每一部分的内容。对于每一条记录,默认情况下字段由空白字符分开。除了内置函外还允许定义自定义函来满足特定需求。 ```bash awk '{print $1}' file.txt ``` 上述代码表示打印出 `file.txt` 文件里每一行的第一个单词[^3]。 #### grep 正则表达式的搜索利器 `grep` 能够在一个或多个文件内查找指定模式匹配的行,并显示这些行的具体位置以及上下文信息。支持 POSIX 扩展正则表达式使得复杂查询变得简单易行。 ```bash grep -r "example" /path/to/search/ ``` 这条指令会在 `/path/to/search/` 下递归寻找含有 `"example"` 关键词的所有文件[^2]。 #### cut 字符串截断好帮手 当只需要获某几列的据时就可以考虑使用 `cut` 来完成这项任务;它可以按照字节、字符或者定界符的方式来进行切割操作。 ```bash cut -d':' -f1,7 /etc/passwd ``` 这里是从 `/etc/passwd` 中出第 1 列和第 7 列的信息。 #### sort 排序专家 如果要对一组无序的据进行升序排列或是降序排列,则应该想到利用 `sort` 实现这样的目的。还可以设置忽略大小写等参让排序更加灵活多变。 ```bash sort -nr numbers.txt ``` 这句语句实现了对名为 `numbers.txt` 的纯字型文档做逆向值排序。
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值