IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> gsed 实操 flutter IM 集成时批量修改代码 -> 正文阅读

[系统运维]gsed 实操 flutter IM 集成时批量修改代码

本 markdown 文章由 leo-editor @auto-md 指令导出

gsed 安装

不要使用 macos 自带的 BSD sed,很多语法与 gnu-sed 不同,请安装 linux gnu-sed

brew install gnu-sed

安装好后,可以直接运行 gsed,也可以使用下面命令查看在 macos 下改成执行 sed 命令的方法(实际上就是 PATH 里的一个链接)

brew info gnu-sed

gnu-sed: stable 4.8 (bottled)
GNU implementation of the famous stream editor
https://www.gnu.org/software/sed/
Conflicts with:
  ssed (because both install share/info/sed.info)
/usr/local/Cellar/gnu-sed/4.8 (12 files, 572.4KB) *
  Poured from bottle on 2021-12-11 at 20:50:06
From: git://mirrors.ustc.edu.cn/homebrew-core.git/Formula/gnu-sed.rb
License: GPL-3.0-or-later
==> Caveats
GNU "sed" has been installed as "gsed".
If you need to use it as "sed", you can add a "gnubin" directory
to your PATH from your bashrc like:

    PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"

还有一个更加简单的文案,即更改 ~/.zshrc

alias sed='gsed'

gsed 在一个文件的每一行开头或结尾添加内容

例如,a.txt文件的内容如下:

test1
test2

在 a.txt 开头添加 hello 字符串。

sed -i s/^/hello/g a.txt

a.txt结果如下:

hellotest1
hellotest2

在 a.txt 结尾添加 hello 字符串。

sed -i s/$/hello/g a.txt

a.txt结果如下:

test1hello
test2hello

gsed 在一个文件前面或后面插入一行

Grammar:

gsed -i '1i \添加的内容' file #这是在第一行前添加字符串 
gsed -i '1a \添加的内容' file #这是在第一行后添加字符串 
gsed -i '$i \添加的内容' file #这是在最后一行行前添加字符串 
gsed -i '$a \添加的内容' file #这是在最后一行行后添加字符串

Explain:

  • 1 代表第一行
  • $ 代表最后一行
  • i 代表在定位的上一行插入
  • a 代表在定位的最后一行插入
  • -i 直接改文件内容,否则只把结果输出到终端

gsed 删除指定行

删除第一行

sed -i '1d' filename

删除第 n 行

sed -i 'nd' filename

删除最后一行

sed -i '$d' filename

gsed 批量处理文件

如批量替换多个文件指定字符串:

sed -i.bak 's/test_str/test/' `grep -rl test_str test_dir/*`
  • -i[extension],直接编辑文件选项,即直接修改文件内容,可以通过声明备份文件后缀备份修改的文件,如上述命令 .bak 即会备份一份修改前文件,后缀为.bak;

    如果不声明后缀或声明 ‘’ 零长度后缀名,则不会备份即将修改的文件

  • 's/test_str/test/',这里是文件修改模式,意图将字符串 test_str 替换为 test

  • 用 `` 声明组合命令,这里递归搜索 test_dir 目录,并且列出文件内容包含 test_str 字符串文件名称( -l 选项只会列出匹配到的一个文件名)

      `grep -rl test_str test_dir/*`
    

gsed 实操腾迅 flutter IM 集成时批量修改

问题1: 在聊天项目中,因为未使用 dart 空安全,但是腾迅 IM demo 的代码中使用了 dart 空安全,这样就导致 demo 报错。所以需要在每个 dart 文件的第一行加入 // @dart=2.14,以避免 demo 语法检测报错。

下面是操作步骤:

Step1 复制整个 demo 到鹿丁项目中

cp -R TencentIMFlutterDemo/lib/ ~/project/flutter_luding/lib/pages/tim/

Step2 查看需要加入 // @dart=2.14 dart 文件数量

find . -type f -name '*.dart' | wc -l  返回 81 个文件,太多了不要手工处理

Step3 在每个 dart 文件的第一行加入 // @dart=2.14

命令二选一
find . -type f -name '*.dart' | xargs gsed -i.bak '1i // @dart=2.14'
gsed -i.bak '1i // @dart=2.14' `find . -type f -name '*.dart'`

在更改之前对每个文件进行了备份 .bak 文件

查看更改结果

find . -type f -name '*.dart' | xargs head -n 2 查看被更改文件前两行
find . -type f -name '*.bak' | xargs head -n 2  查看备份文件前两行

问题2: 把 TencentIMFlutterDemo 移入到项目的 tim 目录后,各导入的 dart 库路径也发生了变化,需要按照鹿丁项目的路径去引用,下面进行替换处理。

Step1 查看有多少行 import 代码需要被替换

grep -r "package:tencent_im_sdk_plugin_example/" ./ | wc -l
一共有 410 行代码需要更改路径

Step2 整体进行替换还做了备份

grep -rl "package:tencent_im_sdk_plugin_example" ./ | xargs gsed -i.import_bak "s/package:tencent_im_sdk_plugin_example/package:flutter_luding\/pages\/tim/"

Step3 检查替换了多少行

grep -r "package:flutter_luding/pages/tim" ./ | wc -l
一共替换了 410 行代码

TencentIMFlutterDemo 一共有多少行代码

find . -type f -name '*.dart' | xargs wc -l | tail -n1
10313 total
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-12-15 18:43:00  更:2021-12-15 18:44:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 5:52:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码