【问题标题】:Script for removing the words in the line删除行中单词的脚本
【发布时间】:2014-03-27 15:44:20
【问题描述】:

是否有任何脚本可以删除该行中的单词,例如这些:

“我的名字/你的名字/我们的名字/名字”
“我的名字/名字”

我想删除双引号内和最后一个斜杠之前的单词。无论出现什么词,我都需要删除它。删除后,它们都应该是:

“名称”

更具体地说:我有一个文件夹,该文件夹中有多个文件。每个文件都包含一个像#include "my_name/ur_name/name" 这样的头文件。我希望它是#include "name",因为我想在当前目录中创建该标题。

【问题讨论】:

  • 你想要什么语言?实际上,您尝试过或搜索过什么?
  • 你有什么尝试吗?我们说的是什么语言?平台 ?老实说,伙计
  • @totymedli shell 脚本
  • 您的示例使 IMO 感到困惑。向我们展示您之前拥有的东西,以及改变之后您想要的东西。是 Linux 中的 shell 脚本,还是 Windows 中的批处理文件?
  • @foxidrive linux中的shell脚本。

标签: shell


【解决方案1】:

你可以试试下面的命令,

命令:

sed -i 's|#include "my_name/ur_name/name"|#include "name"|g' *

说明:

命令会将(#include "my_name/ur_name/name") 替换为(#include "name") 到目录的所有文件中

注意:
命令立即返回“OK”信息,但是执行内部文件操作需要时间。

【讨论】:

    【解决方案2】:

    外壳文件

    创建一个名为main.sh 的文件并将其复制:

    #Get parameter.
    string=$1
    #Explode string to array.
    IFS='/' read -a array <<< "$string"
    #Get array size.
    size=${#array[@]}
    #Get last array element.
    echo ${array[$size-1]}
    

    BASH 用法

    现在您可以使用双引号之间的路径作为参数调用main.sh,它将返回最后一段。

    $bash -f main.sh "my_name/your_name/ours_name/name"
    名称
    $bash -f main.sh "我的名字/名字"
    名字

    也许你也应该看看这个问题:Take the last part of the folder path in shell

    【讨论】:

    • 字符串无关紧要..字符串可以是任何东西..那是字符串之一。有几个字符串。我不能改变它好吗???这就是为什么我用引号表示。
    • 你可以给任何东西作为参数。如果它包含至少一个/ 字符,它将返回最后一个/ 之后的所有内容。这就是你要求的......
    • 它对我不起作用。我在所有文件包含的文件夹中创建了 main.sh。我做了和你提到的一样的事情。在 $bash -f main.sh "my_name/your_name/ours_name/name" 之后,我检查了文件,存在相同的 my_name/your_name/ours_name/name。
    • 您在一个问题中提出了两个不同的问题。首先,您需要一个操作字符串的脚本,为此您可以在上面看到我的答案。您的第二个请求是一项更大的任务,您需要进入所有文件,阅读它们,获取双引号字符串,操作它们然后保存文件。您不能不让我们来完成您的全部工作。做一些研究,尝试一些然后再问。如果您要修改的行数不足 100 行,那么手动替换文本会比编写此脚本更容易。请删除您的第二个问题并在另一个帖子中提问。
    【解决方案3】:

    简单的一行就可以做到这一点

    文件.txt

    "my_name/your_name/ours_name/name"
    "my_name/x_name"
    

    命令

    sed 's/^"//g' file.txt | awk 'BEGIN {FS="/"} {print $NF}' | sed 's/^/"/g'
    

    输出

    "name"
    "x_name"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-23
      • 1970-01-01
      相关资源
      最近更新 更多