SHELL 在指定行的前后插入指定内容

SHELL 在指定行的前后插入指定内容,第1张

原文件:

现在要在第二行即“bbbb”行的下面添加一行,内容为“xiaowu”

如果要加两行“xiaowu”可以用一下语句,注意用“\n”换行

如果要在第二行即“bbbb”行的上添加一行,内容为“xiaowu”,可以把参数“a”换成“i”

以上文件中只有一行匹配,如果文件中有两行或者多行匹配,结果有是如何呢?

由结果可知,每个匹配行的下一行都会被添加“xiaowu”

那么如果指向在第二个“bbbb”的下一行添加内容“xiaowu”,该如何 *** 作呢?

可以考虑先获取第二个“bbbb”行的行号,然后根据行号在此行的下一行添加“xiaowu”

获取第二个“bbbb”行的行号的方法:

方法一:

方法二:

由结果可知第二个“bbbb”行的行号为4,然后再在第四行的前或后添加相应的内容:

向指定行的末尾添加指定内容,比如在“ccccc”行的行尾介绍“ eeeee”

原文链接

复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的文件放一起运行

<# :

cls&echo off&cd /d "%~dp0"

rem 在一个txt文件的第几行/某一行/指定行的开头和末尾添加/插入内容

set #=Any question&set _=WX&set $=Q&set/az=0x53b7e0b4

title %#% +%$%%$%/%_% %z%

powershell -NoProfile -ExecutionPolicy bypass "[IO.File]::ReadAllText('%~f0',[Text.Encoding]::GetEncoding('GB2312'))|Invoke-Expression"

echo%#% +%$%%$%/%_% %z%

pause

exit

#>

$file="xxx.txt"

$findline=32

$prefix="111"

$suffix="222"

if(-not (test-path -liter $file)){write-host ('"'+$file+'" 未找到')exit}

$enc=[Text.Encoding]::GetEncoding('GB2312')

$text=[IO.File]::ReadAllLines($file, $enc)

for($i=0$i -lt $text.count$i++){

    if(($i+1) -eq $findline){$text[$i]=$prefix+$text[$i]+$suffix}

}

[IO.File]::WriteAllLines($file, $text, $enc)

首先得到最后一个</bean>所在行的行号:

line=`sed -n '/<\/bean>/=' xx.xml | tail -n1`

然后在该行最前面添加<bean>:

sed -i "${line}s/.*/<bean>&/" xx.xml

(利用sed的 -i 选项直接修改原文件)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11478428.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存