linux如何替换文件指定行的特定位置字符串

linux如何替换文件指定行的特定位置字符串,第1张

可以通过Shell脚本替换字符串方式,如果知道第几行,格式如下:

<string id="str_ig_ghjjk">hello</string>

字符串内容可能是任意字符串,如何把>和<中间的字符串替换为我的字符串比如world

具体例子:

比如要替换第128行

sed -i '128s/>.*</>world</' test.txt

这样子

YDAY=$(date +"%Y%m%d" -d "-1 days")

TDAY=$(date +"%Y%m%d")

awk  -v YDAY=$YDAY  -v TDAY=$TDAY '

NR==1 {

if(substr($0,20,8)==YDAY)

    $0=substr($0,1,19) TDAY substr($0,28)

if(substr($0,34,8)==YDAY)

    $0=substr($0,1,33) TDAY substr($0,42)

}

/^TH/{

if(substr($0,21,8)==YDAY)

    $0=substr($0,1,20) TDAY substr($0,29)

}

{print }'  文件

Linux sed 命令是利用脚本来处理文本文件。

sed 可依照脚本的指令来处理、编辑文本文件。

Sed 主要用来自动编辑一个或多个文件、简化对文件的反复 *** 作、编写转换程序等。

语法

参数说明:

regular_express.txt 文件内容如下:

利用 sed 将 regular_express.txt 内每一行结尾若为 . 则换成 !

:q:q

利用 sed 直接在 regular_express.txt 最后一行加入 # This is a test:

由於 $ 代表的是最后一行,而 a 的动作是新增,因此该文件最后新增 # This is a test!

sed 的 -i 选项可以直接修改文件内容,这功能非常有帮助!举例来说,如果你有一个 100 万行的文件,你要在第 100 行加某些文字,此时使用 vim 可能会疯掉!因为文件太大了!那怎办?就利用 sed 啊!透过 sed 直接修改/取代的功能,你甚至不需要使用 vim 去修订!

sed -i 常见用法(直接对文本文件进行 *** 作的)

替换掉每行的第一个字符串

替换掉所有的字符串 sed -i 's/原字符串/新字符串/g' file

去掉 “行首” 带“@”的首字母@

特定字符串的行前插入新行

特定字符串的行后插入新行

特定字符串的删除


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

原文地址: http://outofmemory.cn/yw/9014398.html

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

发表评论

登录后才能评论

评论列表(0条)

保存