Linux 如何将字符串复制并附加到行尾
我有一个包含以下行的文件:Linux 如何将字符串复制并附加到行尾,linux,Linux,我有一个包含以下行的文件: a b c patch/sample/upgrade.sql a b c demo/sample/script.sh 我希望能够复制从“c”之后的位置到最后一个“/”的所有内容,并将其附加到文件中每行的末尾。例如: a b c patch/sample/upgrade.sql patch/sample a b c demo/sample/script.sh demo/sample 有人知道我怎么做吗?如果每一行都以a b c开头,那应该可以: $> sed
a b c patch/sample/upgrade.sql
a b c demo/sample/script.sh
我希望能够复制从“c”之后的位置到最后一个“/”的所有内容,并将其附加到文件中每行的末尾。例如:
a b c patch/sample/upgrade.sql patch/sample
a b c demo/sample/script.sh demo/sample
有人知道我怎么做吗?如果每一行都以a b c开头,那应该可以:
$> sed 's@a b c \(.*\)/[^/]*@& \1@g' foo.txt
a b c patch/sample/upgrade.sql patch/sample
a b c demo/sample/script.sh demo/sample
否则,只需调整第一部分。如果可以使用
awk
,则可以尝试:
awk '
{
last=x
n=split($4,tmp,/[/]/)
for(i=1;i<n;i++) {
last=last sep tmp[i];
sep="/"
}
$0=$0 FS last
}1' file
$awk'
{
last=x
n=拆分($4,tmp,/[/]/)
对于(i=1;i从@fredtantini的答案中获得灵感,请在终端中尝试以下内容
sed -r 's|(\w+ \w+ \w+ /((.*)?/)*(.*))|\1 \3|' foo.txt
如果要将其输出到文件
sed -r 's|(\w+ \w+ \w+ /((.*)?/)*(.*))|\1 \3|' foo.txt > newFoo.txt
sed -r 's|(\w+ \w+ \w+ /((.*)?/)*(.*))|\1 \3|' foo.txt
sed -r 's|(\w+ \w+ \w+ /((.*)?/)*(.*))|\1 \3|' foo.txt > newFoo.txt