我得到了一个测试文件,并且应该能够计算文件特定列中的单词数。问题是有些行只包含数字。
我知道它将wc
给出某些内容的字数 - 但如果我没记错的话,它不会区分数字和实际单词(因此带有 0184674673 HELLO 的文件将给出两个字数) - 是否有一些非复杂的方法(缺少遍历列中的每一行,检查该单词是否有任何数字,如果没有则增加计数器)是否用命令解决这个问题?
如果您想查看我提供的文件的片段,请在此处:
不听话的RESINY GRAPHICS低度刺痛难解的es 85790227邪恶的MINIS眨眼的申请人TORPIDITIES潜文本分配的卡片心电图机烧结脚部迷恋夏尔巴弗兰否决新闻阅读器15318116腐烂执行先锋朗朗一致1411718 7 假装畸形黄花九轮草 18714723 国际化法官讨论 85192973 法定逃避责任 安全瘰疬排除核素沉船残骸序言不雅营养减压男人般的集体谈判耐嚼埃及血腥故事值得咆哮的血腥不受控制的受害者双重剪裁5363130令人不安的迷人多变干燥粗鲁卑鄙脾气暴躁疼痛94854804 JETSAMS野蛮收回倾向怡和授权游行领带yer USHER COMPLIANCES 轻蔑 98908803 CANDIDACY Rostov titrates 字典 乐观主义者 luted 疣 RAPINE 94683675 食人者敌意 KALI钦佩 95714958 截肢 65196125 取景器 放大 缩小 否认 阿尔卑斯山 斯塔尔 高跟鞋 女性 幸运 宗主教反共主义
答案1
如果你不限制wc,你可以用sed这样的工具过滤掉数字,然后用wc统计单词数。
鉴于您的文本(在测试文件中)将给出:
$ sed -e s/[0-9]*//g testfile
不听话的树脂图形 卑鄙的人 恶毒的 MINIS 眨眼的申请者 托皮蒂斯 潜台词 分配的卡片心电图机 烧结的足底迷恋 夏尔巴·弗兰否决新闻阅读器 腐烂 执行先锋 朗朗一致地假装畸形牛花 法官 国际化讨论率逃避安全瘰疬排除核素沉船残骸序言猥琐营养减压男人气概NEGOTIANT耐嚼埃及血腥的故事更有价值 咆哮的血腥 不受控制的受害者 双重令人厌恶 着迷 辉煌 多变 干燥 粗鲁 卑鄙 脾气暴躁 疼痛 杰萨姆斯 野蛮 夺取 倾向 怡和授权 游行领带 希利尔 乌瑟合规 蔑视 候选人 罗斯托夫滴定 字典 优化IST LUT 疣 RAPINE 食人敌对 KALI 崇拜 截肢取景器 升级缩小否认 阿尔卑斯山 Stahl HEELLESS女性主义 幸运 父权制 反共主义
我使用的正则表达式模式有一个缺点,即数字后面的空格不会被删除,但这对于使用 wc 进行计数似乎并不重要。
使用管道过滤后,可以直接使用 wc 来统计单词数。
$ sed -e s/[0-9]*//g testfile | wc
2 104 1035