替换字符串SHELL中的字符


我的问题是:

我创建了一个脚本,用"find ."命令引用我的目录X中的所有文件将它们存储在一个文件中,每行一个文件,像这样:

./dossier1/dossier2/fic.txt
./dossier1/dossier2/fic.jpg

我想替换为:

filename;/opt/InfoVista/Portal/site/rubrics/help/dossier1/dosssier2/;no;555;

这是我尝试的:

find . >> list_fic.txt

ligne=';no;555'
std=/opt/InfoVista/Portal/site/rubrics/help/

while read line  
do 
        filename=${$line##.*/} // allow me to delete the path and keep just the filenam
    final=$std$nomfic$ligne
        echo  $final >> final.txt // put the line in the final.txt file
done < list_fic.txt

这是在awk中的一种方法:

awk -F/ -v dir="/opt/InfoVista/Portal/site/rubrics/help/" -v l=";no;555;" '
{ 
    OFS="/" ; f=$NF; NF--; sub(/^.//,"") ; OFS=";" ; print f,dir $0 l
}' list_fic.txt

你的问题不清楚。但是如果后缀和前缀是固定的,这里有一种方法

 find . | awk -F "./" '{print "Filname;/opt/InfoVista/Portal/site/rubrics/help/"$1$2<any num of fields>";no;555"}' > final.txt

我需要为当前目录中包含的每个文件创建一个包含以下结构的文件:

thenameofthefileOrdir;/绝对路径;不,555;

我修改了你的解决方案,那工作得很好!!

#!/bin/bash
find . | nawk -F/ -v dir="/opt/InfoVista/Portal/site/rubrics/help/" -v l=";no;555" '
{ 
OFS="/" ; f=$NF; NF--; sub(/^.//,"") ; OFS=";" ; print f,dir $0 l
}' >> final.txt

现在,我的final.txt的第一行包含当前目录,最后两行对应于这个脚本和final.txt,这三行没用(第一行,两行)

最新更新