Bash 通过忽略反斜杠,使用awk/sed在cpp文件流中追加给定变量
我在shell脚本中有一个变量,如下所示:Bash 通过忽略反斜杠,使用awk/sed在cpp文件流中追加给定变量,bash,shell,awk,sed,Bash,Shell,Awk,Sed,我在shell脚本中有一个变量,如下所示: var=file1.cpp file2.cpp file3.cpp file4.cpp 我想将此“文件夹/子文件夹/”附加到每个.cpp文件中。我使用下面的sed命令部分帮助: echo $var | sed 's/^/'"$i"'\//g;s/\s/ '"$i"'\//g' where $i --> "Folder" and sed adds extra "/" to it 此sed只能将“文件夹/”附加到文件中。。。。我无法
var=file1.cpp file2.cpp file3.cpp file4.cpp
我想将此“文件夹/子文件夹/
”附加到每个.cpp文件中。我使用下面的sed
命令部分帮助:
echo $var | sed 's/^/'"$i"'\//g;s/\s/ '"$i"'\//g'
where $i --> "Folder" and sed adds extra "/" to it
此sed
只能将“文件夹/
”附加到文件中。。。。我无法将“文件夹/子文件夹
”附加到每个文件
如何修改sed以向文件添加“文件夹/子文件夹/”路径。我是否可以修改它以忽略
$I
变量中的反斜杠“/”(即忽略文件夹/子文件夹中的“/”
您可以对sed
使用不同的分隔符,如
您还可以将s
命令组合到一个sed
$ re="folder/subfolder/"
$ echo $var | sed -r "s#(^| )#\1$re#g"
folder/subfolder/file1.cpp folder/subfolder/file2.cpp folder/subfolder/file3.cpp folder/subfolder/file4.cpp
范例
$ echo $var | sed -r 's#(^| )#\1folder/subfolder/#g'
folder/subfolder/file1.cpp folder/subfolder/file2.cpp folder/subfolder/file3.cpp folder/subfolder/file4.cpp
或
如果要在sed中使用变量
$ re="folder/subfolder/"
$ echo $var | sed -r "s#(^| )#\1$re#g"
folder/subfolder/file1.cpp folder/subfolder/file2.cpp folder/subfolder/file3.cpp folder/subfolder/file4.cpp
您也可以在脚本中尝试这些代码
var="file1.cpp file2.cpp file3.cpp file4.cpp"
i="Folder/SubFolder/"
echo "$var"|sed "s#[^ ][[:alnum:]]*[^ ]\.#$i&#g"
输出
Folder/SubFolder/file1.cpp Folder/SubFolder/file2.cpp Folder/SubFolder/file3.cpp Folder/SubFolder/file4.cpp
我成功地使用了它。但还没有完全使用。我有一个类似“for”的循环"因为我在这个文件夹列表中取决于
\1
。请参见我答案中的示例。希望它清晰。我在另一个示例中错过了\1
,它适用于文件夹和子文件夹,但不适用于没有子文件夹的单个文件夹。我得到Folder1File1.cpp Folder1File2.cpp。如果不清楚,我将编辑答案。注意,我添加了sed双引号中的“……”,以便bash可以将变量“$var”替换到表达式中。