Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 通过忽略反斜杠,使用awk/sed在cpp文件流中追加给定变量_Bash_Shell_Awk_Sed - Fatal编程技术网

Bash 通过忽略反斜杠,使用awk/sed在cpp文件流中追加给定变量

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只能将“文件夹/”附加到文件中。。。。我无法

我在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
只能将“
文件夹/
”附加到文件中。。。。我无法将“
文件夹/子文件夹
”附加到每个文件


如何修改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”的循环"因为我在这个文件夹列表中取决于我如何用$i替换文件夹/子文件夹???@Pogo抱歉,我没有理解你。你能编辑你的问题来添加相关的细节吗?正如你说的那样。但是我在文件中缺少空格。folder/SubFolder/file1.cppFolder/SubFolder/file2.cppd在替换字符串中包含
\1
。请参见我答案中的示例。希望它清晰。我在另一个示例中错过了
\1
,它适用于文件夹和子文件夹,但不适用于没有子文件夹的单个文件夹。我得到Folder1File1.cpp Folder1File2.cpp。如果不清楚,我将编辑答案。注意,我添加了sed双引号中的“……”,以便bash可以将变量“$var”替换到表达式中。