【发布时间】:2017-06-09 03:23:53
【问题描述】:
我正在处理大型 .txt 文件,我们正在尝试确定哪些不符合一行中正确数量的字符(最多 80 个字符)。
为了这个例子,假设我们每行需要 10 个字符,我需要为没有的每一行附加“(+额外字符数)”和“(-缺失字符数)”正好 10 个字符。
这是我目前所拥有的:
while IFS='' read -r line || [[ -n "$line" ]]; do
if [[ "${#line}" -gt 10 ]]; then
echo "Mo dan 10 D: ${#line}"
elif [[ "${#line}" -lt 10 ]]; then
echo "Less dan 10 D: ${#line}"
fi
done < "$1"
我一直在寻找一种方法来附加我在相应行中回显的这两个字符串,以便我们识别它们。
我研究了 awk 和 sed,但无法正确循环遍历整个 .txt 文件、计算每行中的字符数并附加一个带有适当消息的字符串。
希望在 shell 脚本或 awk 或 sed 解决方案方面提供一些帮助。 谢谢。
编辑:这是一个示例输入文件(注意空格也算作字符)
Line 1****
Line 2*****
Line 3*
Line 4****
Line 5****
Line 6**
Line 7****
Line 8********
Line 9****
这是想要的输出
Line 1****
Line 2*****(+1)
Line 3*(-3)
Line 4****
Line 5****
Line 6**(-2)
Line 7****
Line 8********(+4)
Line 9****
【问题讨论】:
-
如果您解析大文件,我会再次建议任何“if”循环或逐行阅读。不能用 awk 或 sed 编译你的答案(也不要使用 sed)。只要简单的正则表达式无法解决问题,我个人更喜欢使用 Python。