是否有任何脚本可以删除该行中的单词,例如:
“我的名字/你的名字/我们的名字/名字”
“我的名字/名字”
我想删除双引号内和最后一个斜杠之前的单词。无论出现什么词,我都需要删除它。删除后,它们都应该是:
“姓名”
更具体地说:我有一个文件夹,该文件夹中有多个文件。每个文件都包含一个头文件,例如#include "my_name/ur_name/name"
. 我希望它是#include "name"
,因为我想在当前目录中创建该标题。
是否有任何脚本可以删除该行中的单词,例如:
“我的名字/你的名字/我们的名字/名字”
“我的名字/名字”
我想删除双引号内和最后一个斜杠之前的单词。无论出现什么词,我都需要删除它。删除后,它们都应该是:
“姓名”
更具体地说:我有一个文件夹,该文件夹中有多个文件。每个文件都包含一个头文件,例如#include "my_name/ur_name/name"
. 我希望它是#include "name"
,因为我想在当前目录中创建该标题。
你可以试试下面的命令,
命令:
sed -i 's|#include "my_name/ur_name/name"|#include "name"|g' *
描述:
命令将用 ( #include "my_name/ur_name/name"
)替换 ( #include "name"
) 到目录的所有文件中
注意:
命令立即返回“OK”消息,但执行内部文件操作需要时间。
一个简单的一行就可以做到这一点
"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"
创建一个名为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]}
现在您可以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