Linux Shell中按首列编号筛选文本行并导出到新文件
根据首列编号筛选文本行的Shell解决方案
刚好遇到过类似的需求,这里给你两个实用的Linux Shell方法,帮你精准筛选input.txt中首列为指定编号的行,生成目标output.txt:
方法1:用awk(推荐,精准匹配首列)
awk处理列结构的文本特别顺手,能直接定位首列并做精准匹配:
awk '$1 ~ /^(045002|045013|045018)$/' input.txt > output.txt
简单解释:
$1代表每行的第一列数据/^(045002|045013|045018)$/是正则匹配规则:^和$确保完全匹配首列的6位编号,不会误匹配像0450021这类相似的字符串- 最后通过
>把结果重定向到output.txt里
如果后期需要修改目标编号,把编号放到变量里更方便维护:
# 定义目标编号,用|分隔多个值 target_ids="045002|045013|045018" awk -v ids="$target_ids" '$1 ~ "^(" ids ")$"' input.txt > output.txt
方法2:用grep(快速实现)
如果习惯用grep,只要加上合适的参数也能精准匹配:
grep -E "^(045002|045013|045018)\s" input.txt > output.txt
简单解释:
-E启用扩展正则,支持用|表示“或”的关系^确保从行首开始匹配,避免中间出现的编号被误抓\s匹配编号后的空白字符,保证只匹配作为首列的目标编号(如果你的分隔符是制表符,换成\t更精准)
验证结果
运行完命令后,直接用cat output.txt查看,就能得到你想要的只包含指定编号行的结果啦。
内容的提问来源于stack exchange,提问作者bahram khazaei
相关产品推荐
相关产品推荐

