从文本文件打印所有回文

2024-04-12

我看了这个问题:BASH 回文检查器 https://stackoverflow.com/questions/26601234/bash-palindrome-checker。这就是该线程中问题答案所显示的内容:

grep -E '^[a-z]{3,45}$' /usr/share/dict/words | while read -r word;
    do [ $word == `echo $word | rev` ] && echo $word;
done;

我知道这是从“单词”读取,但尝试将其修改为从文本文件读取而不是读取时遇到困难/usr/share/dict/words。我想让它读取我请求的任何文本文件,所以我可以输入:

source palindrome *filename*

这将打印出控制台中文件中找到的回文。稍后也可以得到它,以便我可以输出到输出文件:

source palindrome *filename* >> output.txt

我尝试这样做,但它不起作用,我真的不确定我必须更改什么才能让它读取我的文件:

#!usr/bin/bash

function search
{
    filename=$1

    grep -E '^[a-z]{3,45}$' "$filename" | while read -r word;
        do [ $word == `echo $word | rev` ] && echo $word;
    done;
}
search $1

如果给出任何解决方案,它们可以采用类似的格式吗?我还没有学到太多其他技术。如果给出更复杂的解决方案,请您解释一下给出的代码。


输入文件来自电子书,它非常长,所以一个小片段是:(我确实意识到这并没有显示片段中的回文,但它只是为了显示它是什么类型的文本文件)

O and that lotion mustn't forget.
Fever near her mouth. Your head it simply. Hair braided over: shell with
seaweed. Why do they hide their ears with seaweed hair?

运行源回文时filename没有错误消息。我按 Enter 键,终端让我再次输入我想要输入的任何内容。看起来好像没有通过脚本运行


#!/bin/bash

function search
{
    grep -oiE '[a-z]{3,}' "$@" | tr '[:upper:]' '[:lower:]' | while read -r word; do
        [[ $word == $(rev <<< "$word") ]] && echo "$word"
    done
}

search "$@"

编写此原始代码的字典每行都有一个小写单词。要解析每行包含多个混合大小写单词的文本文件,您需要进行一些修改:

  • 去除^ and $正则表达式中的锚点可以在一行中的任何位置查找单词。
  • Use grep -o打印出匹配的单词。
  • Use grep -i匹配大写和小写。
  • Use tr将大写字母切换为小写。

其他修复:

  • 将 shebang 行更改为#!/bin/bash。它应该是绝对路径,两种首选形式是#!/bin/bash or #!/usr/bin/env bash.
  • Changed £word to $word.
  • Use "$@" so search()可以接受多个文件名。

改进:

  • 没有特别的理由将字数限制为 45 个字符。{3,}删除上限。
  • 双括号[[ ]] are 比单括号更好 https://stackoverflow.com/questions/3427872/whats-the-difference-between-and-in-bash/3427931#3427931 [ ].
  • $(cmd)`cmd`.
  • rev <<< "$word"echo "$word" | rev.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从文本文件打印所有回文 的相关文章

  • 从 TypeScript 运行任何 Linux 终端命令?

    有没有办法直接从 TypeScript 类中执行 Linux 终端命令 这个想法是做类似的事情 let myTerminal new LinuxTerminal let terminalResult myTerminal run sudo
  • 文本处理问题:删除其中一列不包含特定值的行

    我有一个制表符分隔的文件 如下所示 input sequence match sequence score receptor group epitope antigen organism ASRPPGGVNEQF ASRPPGGVNEQF
  • 如何将参数传递给java bash脚本? [复制]

    这个问题在这里已经有答案了 我有一个简单的 bash 脚本来运行我的 java 程序 就这个 run sh bin sh java jar target my jar arch jar 我想将参数传递给这个脚本 该脚本必须将它们传递给jav
  • 如何在 sed 中转义方括号[重复]

    这个问题在这里已经有答案了 我正在使用 grep 和 sed 解析遗留的 C 代码 当尝试替换方括号时 发生了一些奇怪的事情 以下代码替换方括号效果很好 echo xyx xzx xyx sed s g 结果是 xyx xzx xyx 当我
  • 在bash中,是否有相当于“错误消息”的东西

    在 perl 中 您可以使用错误消息退出die some msg bash 中是否有等效的单个命令 现在 我正在使用命令来实现这一点 echo some msg exit 1 你可以很容易地自己推出 die echo 1 gt 2 exit
  • 从 PL/SQL 调用 shell 脚本,但 shell 以 grid 用户而非 oracle 身份执行

    我正在尝试使用 Runtime getRuntime exec 从 Oracle 数据库内部执行 shell 脚本 在 Red Hat 5 5 上运行的 Oracle 11 2 0 4 EE CREATE OR REPLACE proced
  • 语法错误:for 循环变量不正确

    我正在尝试编写一个可以在后台调高收音机音量的脚本 bin sh for i 80 i lt 101 i do amixer cset numid 1 i sleep 60 done 但我有问题 alarmclock vol sh 3 ala
  • .profile 无法从 Mac 终端运行

    我有一个 profile 文件 我正在终端中读取并使用别名 但在某些时候 别名由于没有明确的原因而停止工作 其他命令仍在工作 为了快速修复 我删除了 rm 并在用户目录中重新创建了 profile 文件 我可以看到 至少在该目录中没有 ba
  • bash 中 :-(冒号破折号)的用法

    bash中这种风格的含义是什么 PUBLIC INTERFACE eth0 目的是什么 If PUBLIC INTERFACE存在且不为null 则返回其值 否则返回 eth0 实际上有一些记录在bash 手册页 http linux di
  • Pure Bash 替换捕获组

    我有这个示例字符串 test string 13A6 该字符 数字可以是从 0 到 9 以及从 A 到 F 我想要这个输出 1 3 A 6 我有这个工作 result echo test string sed s g 我想在没有 sed 的
  • bash 行长度限制从何而来?

    在运行 Bash 4 4 19 标准安装 的 Solaris 11 上 输入行似乎有 256 个字符的限制 我想了解这个限制从何而来 我浏览了手册页 但没有找到任何解决此问题的内容 仅当未使用 readline 库时才会发生这种情况 在下面
  • 如何在数组中存储包含双引号的命令参数?

    我有一个 Bash 脚本 它生成 存储和修改数组中的值 这些值稍后用作命令的参数 对于 MCVE 我想到了任意命令bash c echo 0 0 echo 1 1 这解释了我的问题 我将用两个参数调用我的命令 option1 without
  • 对目录中的所有文件执行命令

    有人可以提供执行以下操作的代码 假设有一个文件目录 所有这些文件都需要通过程序运行 该程序将结果输出到标准输出 我需要一个脚本 该脚本将进入一个目录 对每个文件执行命令 并将输出连接到一个大输出文件中 例如 要在 1 个文件上运行命令 cm
  • 如何在 Linux shell 中将十六进制转换为 ASCII 字符?

    假设我有一个字符串5a 这是 ASCII 字母的十六进制表示Z 我需要找到一个 Linux shell 命令 它将接受一个十六进制字符串并输出该十六进制字符串代表的 ASCII 字符 所以如果我这样做 echo 5a command im
  • 两种情况或 if 哪个更快? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我必须制作一个 非常 轻的脚本 它将接受用户的选项并调用脚本中的函数来执行一些任务 现在我可以使用 IF 和 CASE 选项 但我想知道两
  • 动态参数值取决于另一个动态参数值

    启动前提 非常严格的环境 Windows 7 SP1 Powershell 3 0 使用外部库的可能性有限或不可能 我正在尝试重写之前创建的 bash 工具 这次使用 PowerShell 在 bash 中 我实现了自动完成功能 以使该工具
  • 如何查找所有以句号结尾的单词?

    我有一个包含许多以 a 结尾的单词的文件 其中大部分是缩写 例如 etc p s 如何输出一个仅显示一次所有这些单词的列表 所有单词前面都有一个空格 因此可以使用该空格来查找单词的开头 没有一个单词出现在该行的开头 文件中没有句子 因此句点
  • 如何从 bash 数组中删除元素而不展平数组

    我想创建一个采用 bash 数组的函数 如下所示 a element zero element one element two 并删除一个元素 如 元素一 并留下一个数组 如下所示 a element zero element two 这样
  • 协助 awk/bash 捕获内存差异

    我正在尝试从以下文件中提取以下输出 xr lab show clock Thu Sep 19 14 38 02 812 WIB 14 38 02 893 WIB Thu Sep 19 2019 xr lab xr lab xr lab sh
  • 符合 POSIX 标准的 shell 相当于 Bash“while read -d $'\0' ...”?

    我正在尝试使 Bash 脚本严格符合 POSIX 标准 即消除任何潜在的 Bashisms http mywiki wooledge org Bashism 通过使用checkbashisms px script filename 在给定的

随机推荐

  • 在 google app engine python 中设置 cron 作业

    我刚刚开始使用 Google App Engine 所以我仍在学习如何配置所有内容 我编写了一个名为 parsexml py 的脚本 我希望每 10 分钟左右运行一次 该文件位于我的主目录中 与 main py app yaml 等一起 据
  • 自动添加或删除 Woocommerce 购物车中的免费产品

    我正在尝试创建代码 一旦客户达到购物车中的特定价格点 该代码就会自动将商品添加到客户的购物车中 如果他们只订购虚拟产品 我试图排除这种情况的发生 因为 免费礼物 仅适用于正在发货的产品 我使用的代码是以正确的金额添加免费礼物 但并不排除任何
  • 如何以 4/6/7 角度传递表单提交上的所有选中复选框值

    我想在组件中获取表单的所有已检查项目而不使用change or click 功能 因为它无法获取已检查的项目 这是我在 TS 中的数组 PartyRoles Id 1 Name Vendor Checked true Id 2 Name C
  • VSCode 中的 Flutter 初始化

    我一直在使用 VS Code 开发一个 flutter 项目 当我今天打开我的项目时 有一条通知显示 正在初始化 flutter 这可能需要几分钟 然后就被击中了 此外 flutter run 和 flutter doctor 等所有命令都
  • 将 WKNSURLRequest 崩溃为?其他类型

    当我尝试强制转换 WKNSURLRequest 以及其他类 全部来自 WebKit 框架 时 我遇到了严重崩溃 例如在游乐场 import UIKit import WebKit final class Sigh NSObject NSCl
  • bash set -e and i=0;让i++不同意

    仅当变量的先前值为零时 以下带有调试选项 set e v 的脚本才会在增量运算符处失败 bin bash set e v i 1 let i echo I am still here i 0 let i echo I am still he
  • 在 Flask 中使用 root_path 参数

    我尝试遵循一个教程 该教程旨在演示如何更改静态和模板文件夹在根目录中的位置 但是我无法让这个例子工作 应用程序运行正常 但在查找样式表 GET static style css HTTP 1 1 404 时返回 404 因此 它似乎可以找到
  • 如何从字符串形式的发送者向模拟器发送短信

    我经常在手机中收到短信 其中发送者中包含一些字符串而不是数字 例如公司名称 我想测试一些对这些短信做出反应的应用程序 但是如何将这样的短信发送到模拟器 如果我运行模拟器并执行以下操作 远程登录本地主机 5554 短信发送 MyBank 这是
  • 如何在 Lattice 包中将标签添加到 Levelplot 的顶部 X 轴

    所以我正在使用类似于此的 levelplot 制作类似相关矩阵的图 取自 将相关矩阵绘制成图表 https stackoverflow com questions 5453336 plot correlation matrix into a
  • 如何使带有前导零的不连续字符数字序列连续?

    我有这个字符向量 dput t line c 0304 0305 0306 0308 0311 0313 0314 0316 0318 0321 0322 0323 0324 0326 0327 0330 0333 0337 0338 03
  • 从服务器序列故障转移加载 .js?

    让我们想象一个网页需要加载一个 javascript 文件 即my js 是否可以组织以下故障转移加载顺序 如果服务器 A 已启动 则加载my js来自服务器A 否则 如果服务器 B 已启动 则加载my js来自服务器 B 否则 如果服务器
  • 使用maven仓库作为本地ivy缓存

    是否有可能使用本地 Maven 存储库 m2 作为本地 Ivy 缓存 ivy 他们有不同的布局 有时我使用 Maven 有时我使用 SBT 它在下面使用 Ivy 所以我在 Maven 和 Ivy 中都有相同库的 2 个副本 我想使用相同的目
  • iPhone 上 UIView 和 UILabels 上的渐变[重复]

    这个问题在这里已经有答案了 可能的重复 在 iPhone 应用程序中手动绘制渐变 https stackoverflow com questions 227005 manually drawing a gradient in iphone
  • 如何在函数内使用 ls() 搜索环境?

    我想找到一组函数并保存它们 因为我想将它们以 Rdata 文件发送到远程服务器 并且我不想在服务器上安装新的包 尽管我使用下面的方法遇到错误 但更简单 更好的方法是值得欢迎的 MWE 这是两个虚拟函数 abcd fun 1 lt funct
  • @Column columnDefinition 使哪些属性变得多余?

    我经常指定我的 Column像这样的注释 Column columnDefinition character varying 100 not null length 100 nullable false 正如你所看到的 我指定length
  • MySQL - 如何根据输入的长/纬度选择经度和纬度以逗号分隔的行?

    好的 我的数据库表中有以下两列 其中包含以下长 纬度 longitude 2 2426305000000184 0 7077123000000256 latitude 53 4807593 51 5459269 到目前为止我有这个查询 fu
  • Rails/ActiveRecord has_many through:未保存对象的关联

    让我们使用这些类 class User lt ActiveRecord Base has many project participations has many projects through project participation
  • 跨两个命名域共享会话 cookie

    我有一个具有以下域的 net Web 应用程序 www domain com 子域名 com 文件 domain com 当用户登录到domain com或sub domain com时 我希望他们共享会话状态 即同时登录到两个域 这可以通
  • 为什么所有现有的 C++ 编译器都不支持继承构造函数?

    目前 G 和 VC 2010 都不支持继承构造函数 然而 我认为这是 C 0x 中最美丽的功能之一 我认为编译器应该很容易实现它 为什么编译器对此功能不感兴趣 假设我想通过继承 std string 来设计自己的字符串类 如下所示 clas
  • 从文本文件打印所有回文

    我看了这个问题 BASH 回文检查器 https stackoverflow com questions 26601234 bash palindrome checker 这就是该线程中问题答案所显示的内容 grep E a z 3 45