是否有任何用于删除行中单词的脚本,例如:
“MY_NAME / your_name / ours_name /名称”
“MY_NAME /名称”
我想删除双引号内和最后一个斜杠之前的单词。无论出现什么字,我都需要删除它。删除后,它们都应该是:
“名称”
更具体一点:我有一个文件夹,在该文件夹中有多个文件。每个文件都包含一个头文件,如#include "my_name/ur_name/name"
。我希望它是#include "name"
,因为我想在当前目录中创建该标题。
答案 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)
创建一个名为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
答案 2 :(得分:0)
简单的一行将执行此操作
"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"