有时我们可能需要从一个字符串中删除字母。在这种情况下,Linux包括几个内置的、有用的工具,可以在Bash中删除这些文本中的字母。本文演示了如何使用这些方法从一个字符串中删除字母。在这篇文章中,说明是在Ubuntu 20.04 Focal Fossa上运行的。同样的指令也可以在任何安装了上述工具的Linux系统上运行。为了执行这些指令,我们将利用通常的终端。Ctrl+Alt+T的快捷方式将打开终端工具。
方法01:子串方式
我们的第一个方法是将字母或字符从一个字符串中删除,这更像是从一个原始字符串中创建一个子串。同时,终端已经被打开;我们将制作一个bash文件来添加我们的bash代码。这样,我们就可以在其中进行字符删除或子串制作。因此,我们在shell中使用了内置的touch指令来创建一个bash文件。
由于该文件已经在Ubuntu 20.04的主文件夹中快速生成,在一些编辑器中打开它进行编辑。因此,我们选择GNU编辑器来打开file.sh文件,如下图。
将下面的代码复制到其中。这段代码在开始时包含了bash扩展名,之后,我们声明了一个字符串变量 "val",其值为一个字符串。在另一行,我们使用 "echo "短语来在终端显示这个变量。真正的任务从这里开始。我们初始化了一个变量 "new",并给它分配了一个值,这个值是原始变量 "val "的一个子串。我们通过在双冒号后的大括号中提到"-14 "来做到这一点。这告诉编译器,它必须从原始字符串 "FirstWorldCountries "中删除最后14个字母。剩下的字母将被保存到变量 "new "中。在最后一行,"echo "已经被用来打印新的变量 "new"。
使用 "bash "命令正确执行文件 "file.sh "的结果与预期一致。首先,它显示了第一个字符串变量 "val "的值,然后,它显示了从第一个变量新创建的字符串的值,如图所示。
方法02:使用特殊符号
另一种简单易行的方法是通过特殊符号或字符,如百分比和问号符号,来去除任何字符串中的最后一个字母或字符。因此,这一次我们将使用百分比和问号来删除任何字符串中的字符。因此,我们已经用 "GNU Nano "编辑器打开了同一个文件来更新bash脚本。整体代码是相同的,但变量 "new "部分有些不同。我们使用了一个百分比符号来让系统知道,所提到的问号的数量代表了在这个百分比符号之后要从变量 "val "中删除的字符数量。你可以看到我们已经添加了9个问号符号。这意味着 "FirstWorldCountries "字符串中的最后9个字符将被删除,剩下的字符串将是 "FirstWorld"。这个剩余的字符串将被保存到一个变量 "new "中。
当我们执行更新后的bash文件时,输出结果与预期一致。它显示了第一个变量的原始字符串和第二个变量 "new "的值,后者是由变量 "val "创建的。
方法03:使用Sed
Sed是一个用于改变文本序列的有用和有效的工具。那是一个非交互式的开发环境,可以让你处理数据输入和做简单的文本转换。你也可以用sed来删除文本中你不想要的字母。我们将使用一个例子的字符串,并将其送入sed命令,以达到说明的目的。你可以用sed从某种字符串中删除一个特定的字符。因此,我们在echo语句内使用了一个字符串的简单行。我们用 "sed "来删除所述字符串中的字母 "A"。请确保遵循语法 "s/string_to_be_removed//"。输出显示字母 "A "已被删除。
为了删除整个单词 "Aqsa",我们提到了一个单词的第一个和最后一个字符,其中的点代表缺少的字母。输出显示了删除 "Aqsa "这个词后的字符串。
要从一个字符串中删除任何数量的最后一个字符,请根据你的要求在美元符号前提及点的数量,如图所示。
方法04:使用Awk
Awk是一种复杂的脚本语言,可用于匹配模式和处理文本。你可以使用Awk以各种不同的方式来转移和修改输入。你也可以使用awk从字符串中删除字母。Awk似乎与 "sed "有些不同。这次我们用 "Aqsa Yasin "来改变字符串。awk函数将通过substr方法做子串并在终端打印。函数length被用来显示从所述字符串中删除的字母数量。这里,"length($0)-5 "意味着删除字符串的最后5个字符,剩下的将成为子串的一部分被打印出来。
我们尝试从 "Aqsa Yasin "字符串中删除最后9个字符,得到的子串是 "A"。
方法05:使用Cut
Cut似乎是一个命令行工具,用于从这样的短语或文件中提取一段文本,并将其打印到标准输出。这个操作也可以用来从某种字符串中删除字母。我们将使用一个短语的例子,并将其传递给剪切指令进行测试。因此,我们使用了 "Aqsa Yasin "短语并将其传递给 "cut "查询。在标志-c之后,我们已经定义了一个字符串的索引范围,以便从提到的字符串中切割字符。它将显示从索引1到索引5的字符。索引5在这里被排除。输出显示前4个字符为 "Aqsa"。
这一次我们将以不同的方式使用剪切指令。我们使用了 "rev "函数来反转字符串。在对字符串进行反转后,我们将对字符串的第一个字符进行切割。标志"-c2-"意味着我们的子串将是向上的字符2。之后,再次使用反转函数来反转字符串。所以,这一次我们得到的是去除最后一个字符后的原始字符串。
要删除最后7个字符,你只需在剪切命令中提到"-c7-",同时也使用反向功能。
总结
在Linux上完成一项基本任务的方法往往不止一种。同样,从文本中删除字符也是可行的。这篇文章展示了从一个字符串中消除不需要的字符的五种不同方法,以及一些实例。无论你选择什么工具,都完全取决于你的选择,更关键的是,你想达到什么目的。