Linux系统如何提取文本文件每一行指定索引位置的字符
问题解答
你说的方案是可行的,但需要调整两个细节才能得到预期结果:
- 字符串索引起点修正:Bash 原生的字符串切片从 0 开始计数,所以提取第3个字符的写法应该是
${var:2:1},你原先写的${var:3:1}会提取到第4个字符,和预期输出不符。 - 逐行读取方式优化:不推荐用for循环直接读取文件行,遇到带空格、换行符、特殊字符的行时很容易出现拆分异常,更稳妥的方案是用
while搭配read命令读取。
可用的参考代码
假设你的待处理文本文件名为input.txt,可以直接运行以下代码得到目标结果:
while IFS= read -r line; do echo "${line:2:1}" done < input.txt
用你给出的示例输入测试,运行后输出结果完全匹配预期:
l r w
内容的提问来源于stack exchange,提问作者Nattapat
相关产品推荐
相关产品推荐

