【问题标题】:Bash shell string contains print full wordBash shell 字符串包含打印完整的单词
【发布时间】:2015-11-22 08:19:21
【问题描述】:

代码:

READLINE=$(sudo /bin/cat < "file.txt");
IFS=$';'
for i in $READLINE;
do
txt=$txt" ""$i";
done
unset IFS

for x in $arr
do
if [[ $txt == *$x* ]] ; then
echo "$x is in the txt file";

输出文件.txt

电信测试;是的;

循环输出:

telecomtest 在 txt 文件中
tel 在 txt 文件中

我只想打印完整的单词而不是它的一部分。
这意味着只打印 teletest 而不是 tel。

我怎样才能做到这一点?

【问题讨论】:

  • [[ " $txt " == *" $x "* ]]
  • 您的第一部分非常多余。 cat file.text | tr ';\n' ' ' 工作。
  • 什么是$arr?它似乎包含teletest 和tel。只需从 $arr 中删除 tel 即可。请学习一些shell语法; sn-p 中的大多数分号完全没有用(即可以在不更改程序的情况下删除)。
  • @HuStmpHrrr 确定吗?注意须藤。而且您不应该谈论极度冗余并宣传无用的猫 :-)
  • 您可以对IFS=';' 使用常规引号。 $'...'只需要处理一些C风格的转义码。

标签: string bash shell for-loop contains


【解决方案1】:

您的$arr 似乎同时包含telecomtesttel。由于您没有向我们展示如何分配$arr,因此其他一切都是猜测。您是否删除了太多脚本而无法在此处发布?还缺少一个 fi 来生成这个有效的 shell 语法。

请为我们提供一个最小的可运行脚本,包括file.txt 的一些精简内容,以便我们能够重现该问题。通常这会立即发现问题。

【讨论】:

    猜你喜欢
    • 2015-11-21
    • 2013-11-07
    • 1970-01-01
    • 2018-05-06
    • 1970-01-01
    • 2012-11-06
    • 2013-08-05
    • 2019-08-25
    • 2016-04-07
    相关资源
    最近更新 更多