Shell 如何插入<;拉吉>;开始时和</拉吉>;在本文末尾使用sed?

Shell 如何插入<;拉吉>;开始时和</拉吉>;在本文末尾使用sed?,shell,sed,Shell,Sed,我需要编写一个shell脚本来检查文本文件是否包含和。如果文本文件包含,那么我们需要单独添加,反之亦然;如果两者都不包含,请同时添加 我的文本文件包含以下内容 1123 1111 2222 3333 我想要下面的输出 <raj> 1123 1111 2222 3333 </raj> 1123 1111 2222 3333 这就是工作: sed -e '1{/^<raj>/!i\ <raj> } ${/^<\/raj>/!a\ &l

我需要编写一个shell脚本来检查文本文件是否包含
。如果文本文件包含
,那么我们需要单独添加
,反之亦然;如果两者都不包含,请同时添加

我的文本文件包含以下内容

1123
1111
2222
3333
我想要下面的输出

<raj>
1123
1111
2222
3333
</raj>

1123
1111
2222
3333
这就是工作:

sed -e '1{/^<raj>/!i\
<raj>
}
${/^<\/raj>/!a\
</raj>
}' data.4
数据2 给定
数据.5
,输出为:

<raj>
1123
1111
2222
3333
1123
1111
2222
3333
1123
1111
2222
3333
</raj>

1123
1111
2222
3333
1123
1111
2222
3333
1123
1111
2222
3333
如果这不是您想要的,那么您需要更仔细地指定您想要的内容。

这样做:

sed -e '1{/^<raj>/!i\
<raj>
}
${/^<\/raj>/!a\
</raj>
}' data.4
数据2 给定
数据.5
,输出为:

<raj>
1123
1111
2222
3333
1123
1111
2222
3333
1123
1111
2222
3333
</raj>

1123
1111
2222
3333
1123
1111
2222
3333
1123
1111
2222
3333
如果这不是您想要的,那么您需要更仔细地指定您想要的内容。

这样做:

sed -e '1{/^<raj>/!i\
<raj>
}
${/^<\/raj>/!a\
</raj>
}' data.4
数据2 给定
数据.5
,输出为:

<raj>
1123
1111
2222
3333
1123
1111
2222
3333
1123
1111
2222
3333
</raj>

1123
1111
2222
3333
1123
1111
2222
3333
1123
1111
2222
3333
如果这不是您想要的,那么您需要更仔细地指定您想要的内容。

这样做:

sed -e '1{/^<raj>/!i\
<raj>
}
${/^<\/raj>/!a\
</raj>
}' data.4
数据2 给定
数据.5
,输出为:

<raj>
1123
1111
2222
3333
1123
1111
2222
3333
1123
1111
2222
3333
</raj>

1123
1111
2222
3333
1123
1111
2222
3333
1123
1111
2222
3333

如果这不是您想要的,那么您需要更仔细地指定您想要的内容。

您可以使用下面的Perl命令

perl -0777pe 's/^<raj>\n|\n<\/raj>$//s;s/(.*)/<raj>\n\1<\/raj>\n/s' file
perl-0777pe的//^\n |\n$//s;s/(.*)/\n\1\n/s文件

如果您不关心将整个文件一次写入内存,那么可以使用上面的perl one-liner命令。

您可以使用下面的perl命令

perl -0777pe 's/^<raj>\n|\n<\/raj>$//s;s/(.*)/<raj>\n\1<\/raj>\n/s' file
sed -n 'H;${x
 /\n<raj>/ !s/./&<raj>&/
 \#\n</raj># !s#\(.\).*#&</raj>\1#
 s/.//p
 }' YourFile
perl-0777pe的//^\n |\n$//s;s/(.*)/\n\1\n/s文件

如果您不关心将整个文件一次写入内存,那么可以使用上面的perl one-liner命令。

您可以使用下面的perl命令

perl -0777pe 's/^<raj>\n|\n<\/raj>$//s;s/(.*)/<raj>\n\1<\/raj>\n/s' file
sed -n 'H;${x
 /\n<raj>/ !s/./&<raj>&/
 \#\n</raj># !s#\(.\).*#&</raj>\1#
 s/.//p
 }' YourFile
perl-0777pe的//^\n |\n$//s;s/(.*)/\n\1\n/s文件

如果您不关心将整个文件一次写入内存,那么可以使用上面的perl one-liner命令。

您可以使用下面的perl命令

perl -0777pe 's/^<raj>\n|\n<\/raj>$//s;s/(.*)/<raj>\n\1<\/raj>\n/s' file
sed -n 'H;${x
 /\n<raj>/ !s/./&<raj>&/
 \#\n</raj># !s#\(.\).*#&</raj>\1#
 s/.//p
 }' YourFile
perl-0777pe的//^\n |\n$//s;s/(.*)/\n\1\n/s文件
如果您不关心将整个文件一次写入内存,那么可以使用上面的perl one-liner命令。

sed-n'H${x
sed -n 'H;${x
 /\n<raj>/ !s/./&<raj>&/
 \#\n</raj># !s#\(.\).*#&</raj>\1#
 s/.//p
 }' YourFile
/\n/!s//&&/ \#\n#!s#\(.\)..\&\1# s///p }“你的档案
将整个文件加载到缓冲区中,然后检查是否存在标记,如果缺少,则添加标记。每个标签检查一次。最后打印结果

sed-n'H${x
/\n/!s//&&/
\#\n#!s#\(.\)..\&\1#
s///p
}“你的档案
将整个文件加载到缓冲区中,然后检查是否存在标记,如果缺少,则添加标记。每个标签检查一次。最后打印结果

sed-n'H${x
/\n/!s//&&/
\#\n#!s#\(.\)..\&\1#
s///p
}“你的档案
将整个文件加载到缓冲区中,然后检查是否存在标记,如果缺少,则添加标记。每个标签检查一次。最后打印结果

sed-n'H${x
/\n/!s//&&/
\#\n#!s#\(.\)..\&\1#
s///p
}“你的档案

将整个文件加载到缓冲区中,然后检查是否存在标记,如果缺少,则添加标记。每个标签检查一次。最后打印结果

不要说结果在第一行,因此在添加或不添加结果之前,需要测试所有文件tag@NeronLeVelu:“这很容易做到,如果这是要求的话;例如,在第一个
}
和以
$
开头的行之间的行上添加
/^/d
。但在这种情况下,您将其添加到第一行,但他指定将其放在同一位置。在这种情况下,问题并没有具体说明在这种情况下需要什么。当两者都不存在时,它几乎无法解释想要什么。您可以添加一个符合您对要求的解释的备选答案-我怀疑它是否可以在
sed
中明智地完成您的定义。同意您的观点,这当然是在请求的字里行间阅读的意思不要说第一行,因此,您需要在添加或不添加文件之前测试所有文件tag@NeronLeVelu:“这很容易做到,如果这是要求的话;例如,在第一个
}
和以
$
开头的行之间的行上添加
/^/d
。但在这种情况下,您将其添加到第一行,但他指定将其放在同一位置。在这种情况下,问题并没有具体说明在这种情况下需要什么。当两者都不存在时,它几乎无法解释想要什么。您可以添加一个符合您对要求的解释的备选答案-我怀疑它是否可以在
sed
中明智地完成您的定义。同意您的观点,这当然是在请求的字里行间阅读的意思不要说第一行,因此,您需要在添加或不添加文件之前测试所有文件tag@NeronLeVelu:“这很容易做到,如果这是要求的话;例如,在第一个
}
和以
$
开头的行之间的行上添加
/^/d
。但在这种情况下,您将其添加到第一行,但他指定将其放在同一位置。在这种情况下,问题并没有具体说明在这种情况下需要什么。当两者都不存在时,它几乎无法解释想要什么。您可以添加一个符合您对要求的解释的备选答案-我怀疑它是否可以在
sed
中明智地完成您的定义。同意您的观点,这当然是在请求的字里行间阅读的意思不要说第一行,因此,您需要在添加或不添加文件之前测试所有文件tag@NeronLeVelu:“这很容易做到,如果这是要求的话;例如,在第一个
}
和以
$
开头的行之间的行上添加
/^/d
。但在这种情况下,您将其添加到第一行,但他指定将其放在sam处