Shell 如何插入<;拉吉>;开始时和</拉吉>;在本文末尾使用sed?
我需要编写一个shell脚本来检查文本文件是否包含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
和
。如果文本文件包含
,那么我们需要单独添加
,反之亦然;如果两者都不包含,请同时添加
我的文本文件包含以下内容
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处