用于删除行中单词的脚本

时间:2013-08-13 07:22:45

标签: shell

是否有任何用于删除行中单词的脚本,例如:

  

“MY_NAME / your_name / ours_name /名称”
  “MY_NAME /名称”

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

  

“名称”

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

3 个答案:

答案 0 :(得分:1)

您可以尝试以下命令,

<强>条命令:

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

说明

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

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

答案 1 :(得分:0)

Shell文件

创建一个名为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“my_name / name”
  名称

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

答案 2 :(得分:0)

简单的一行将执行此操作

file.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"