sed替换、添加行


# 源文件
[root@localhost ~]# cat 111
that's venus file
dont edit it
by venus

# 替换字符串
[root@localhost ~]# sed -i 's/venus/simon/' 111
[root@localhost ~]# cat 111
that's simon file
dont edit it
by simon
可以看到venus都被替换为simon

# 字符串中包含单引号的替换
[root@localhost ~]# cat 111
that's simon file
dont edit it
by simon

sed中的单引号需要换成双引号
[root@localhost ~]# sed -i "s/that's/aaa/" 111
[root@localhost ~]# cat 111
aaa simon file
dont edit it
by simon

# 字符串中包含双引号的替换
[root@localhost ~]# cat 111
that"s simon file
dont edit it
by simon

[root@localhost ~]# sed -i 's/that"s/aaa/' 111
[root@localhost ~]# cat 111
aaa simon file
dont edit it
by simon

# 对于带$符号的替换
[root@localhost ~]# cat 111
name=venus
that's $name file
dont edit it
by simon

[root@localhost ~]# sed -i 's/$name/aaa/' 111
[root@localhost ~]# cat 111
name=venus
that's aaa file
dont edit it
by simon
不需要转义

# 插入 行下面
[root@localhost ~]# cat 111
a
b
c
在a下面插入eee字符串
[root@localhost ~]# sed -i '/a/a\eee' 111
[root@localhost ~]# cat 111
a
eee
b
c

# 在a上面插入fff字符串
[root@localhost ~]# cat 111
a
eee
b
c
abc
eee

[root@localhost ~]# sed -i '/a/i\fff' 111
[root@localhost ~]# cat 111
fff
a
eee
b
c
fff
abc
eee

# 插入有特殊字符的
[root@localhost ~]# cat 111
a
b
c
[root@localhost ~]# sed -i '/a/a\hello world \\' 111
[root@localhost ~]# cat 111
a
hello world \
b
c
就需要转义特殊字符

# 插入带换行的字符串
[root@localhost ~]# cat 111
a
b
c
[root@localhost ~]# sed -i '/b/a\hello world \\\nhello world2' 111
[root@localhost ~]# cat 111
a
b
hello world \
hello world2
c
通过\n来换行
评论关闭

支付宝RSA私钥及公钥生成

  • Linux用户(以Ubuntu为例)$ openssl 进入OpenSSL程序

    OpenSSL> genrsa -out rsa_private_key.pem 1024 生成私钥

    OpenSSL> pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt Java开发者需要将私钥转换成PKCS8格式

    OpenSSL> rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem 生成公钥

    OpenSSL> exit ## 退出OpenSSL程序

  • Windows用户在cmd窗口中进行以下操作:C:\Users\Hammer>cd C:\OpenSSL-Win32\bin 进入OpenSSL安装目录

    C:\OpenSSL-Win32\bin>openssl.exe 进入OpenSSL程序

    OpenSSL> genrsa -out rsa_private_key.pem 1024 生成私钥

    OpenSSL> pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt Java开发者需要将私钥转换成PKCS8格式

    OpenSSL> rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem 生成公钥

    OpenSSL> exit ## 退出OpenSSL程序

注意:对于使用Java的开发者,将pkcs8在console中输出的私钥去除头尾、换行和空格,作为开发者私钥,对于.NET和PHP的开发者来说,无需进行pkcs8命令行操作。

经过以上步骤,开发者可以在当前文件夹中(Windows用户在C:\OpenSSL-Win32\bin)看到rsa_private_key.pem和rsa_public_key.pem两个文件,前者为私钥,后者为公钥。开发者将私钥保留,将公钥提交给支付宝网关,用于信息加密及解密。以下为使用OpenSSL生成的私钥文件和公钥文件示例。

  • 标准的私钥文件示例(PHP、.NET使用)
    1
    2
    3
    -----BEGIN RSA PRIVATE KEY-----
    MIICXQIBAAKBgQC+L0rfjLl3neHleNMOsYTW8r0QXZ5RVb2p/vvY3fJNNugvJ7lo4+fdBz+LN4mDxTz4MTOhi5e2yeAqx+v3nKpNmPzC5LmDjhHZURhwbqFtIpZD51mOfno2c3MDwlrsVi6mTypbNu4uaQzw/TOpwufSLWF7k6p2pLoVmmqJzQiD0QIDAQABAoGAakB1risquv9D4zX7hCv9MTFwGyKSfpJOYhkIjwKAik7wrNeeqFEbisqv35FpjGq3Q1oJpGkem4pxaLVEyZOHONefZ9MGVChT/MNH5b0FJYWl392RZy8KCdq376Vt4gKVlABvaV1DkapL+nLh7LMo/bENudARsxD55IGObMU19lkCQQDwHmzWPMHfc3kdY6AqiLrOss+MVIAhQqZOHhDe0aW2gZtwiWeYK1wB/fRxJ5esk1sScOWgzvCN/oGJLhU3kipHAkEAysNoSdG2oWADxlIt4W9kUiiiqNgimHGMHPwp4JMxupHMTm7D9XtGUIiDijZxunHv3kvktNfWj3Yji0661zHVJwJBAM8TDf077F4NsVc9AXVs8N0sq3xzqwQD/HPFzfq6hdR8tVY5yRMb4X7+SX4EDPORKKsgnYcur5lk8MUi7r072iUCQQC8xQvUne+fcdpRyrR4StJlQvucogwjTKMbYRBDygXkIlTJOIorgudFlrKP/HwJDoY4uQNl8gQJb/1LdrKwIe7FAkBl0TNtfodGrDXBHwBgtN/t3pyi+sz7OpJdUklKE7zMSBuLd1E3O4JMzvWP9wEE7JDb+brjgK4/cxxUHUTkk592
    -----END RSA PRIVATE KEY-----
  • PKCS8处理后的私钥文件示例(Java使用)
    1
    2
    3
    -----BEGIN PRIVATE KEY-----
    MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAN0yqPkLXlnhM+2H/57aHsYHaHXazr9pFQun907TMvmbR04wHChVsKVgGUF1hC0FN9hfeYT5v2SXg1WJSg2tSgk7F29SpsF0I36oSLCIszxdu7ClO7c22mxEVuCjmYpJdqb6XweAZzv4Is661jXP4PdrCTHRdVTU5zR9xUByiLSVAgMBAAECgYEAhznORRonHylm9oKaygEsqQGkYdBXbnsOS6busLi6xA+iovEUdbAVIrTCG9t854z2HAgaISoRUKyztJoOtJfI1wJaQU+XL+U3JIh4jmNx/k5UzJijfvfpT7Cv3ueMtqyAGBJrkLvXjiS7O5ylaCGuB0Qz711bWGkRrVoosPM3N6ECQQD8hVQUgnHEVHZYtvFqfcoq2g/onPbSqyjdrRu35a7PvgDAZx69Mr/XggGNTgT3jJn7+2XmiGkHM1fd1Ob/3uAdAkEA4D7aE3ZgXG/PQqlm3VbE/+4MvNl8xhjqOkByBOY2ZFfWKhlRziLEPSSAh16xEJ79WgY9iti+guLRAMravGrs2QJBAOmKWYeaWKNNxiIoF7/4VDgrcpkcSf3uRB44UjFSn8kLnWBUPo6WV+x1FQBdjqRviZ4NFGIP+KqrJnFHzNgJhVUCQFzCAukMDV4PLfeQJSmna8PFz2UKva8fvTutTryyEYu+PauaX5laDjyQbc4RIEMU0Q29CRX3BA8WDYg7YPGRdTkCQQCG+pjU2FB17ZLuKRlKEdtXNV6zQFTmFc1TKhlsDTtCkWs/xwkoCfZKstuV3Uc5J4BNJDkQOGm38pDRPcUDUh2/
    -----END PRIVATE KEY-----
  • 公钥文件示例
    1
    2
    3
    -----BEGIN PUBLIC KEY-----
    MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQWiDVZ7XYxa4CQsZoB3n7bfxLDkeGKjyQPt2FUtm4TWX9OYrd523iw6UUqnQ+Evfw88JgRnhyXadp+vnPKP7unormYQAfsM/CxzrfMoVdtwSiGtIJB4pfyRXjA+KL8nIa2hdQy5nLfgPVGZN4WidfUY/QpkddCVXnZ4bAUaQjXQIDAQAB
    -----END PUBLIC KEY-----

2.3.3.上传公钥

将公钥文件去除头尾、换行和空格,仅需填入字符串,例如转换前公钥pem文件格式:

1
2
3
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQWiDVZ7XYxa4CQsZoB3n7bfxLDkeGKjyQPt2FUtm4TWX9OYrd523iw6UUqnQ+Evfw88JgRnhyXadp+vnPKP7unormYQAfsM/CxzrfMoVdtwSiGtIJB4pfyRXjA+KL8nIa2hdQy5nLfgPVGZN4WidfUY/QpkddCVXnZ4bAUaQjXQIDAQAB
-----END PUBLIC KEY-----

转换后得到的字符串为:

1
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQWiDVZ7XYxa4CQsZoB3n7bfxLDkeGKjyQPt2FUtm4TWX9OYrd523iw6UUqnQ+Evfw88JgRnhyXadp+vnPKP7unormYQAfsM/CxzrfMoVdtwSiGtIJB4pfyRXjA+KL8nIa2hdQy5nLfgPVGZN4WidfUY/QpkddCVXnZ4bAUaQjXQIDAQAB
评论关闭

升级linux内核

linux内核官网: www.kernel.org  获取最新内核
目前最新稳定版: wget -c https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.5.2.tar.xz
安装编译环境: yum install -y gcc gcc-c++ ncurses-devel openssl-devel

tar.xz 文件解压
xz -z 压缩
xz -d 解压

这里需要在系统原有的内核配置文件的基础上建立新的编译选项,所以复制一份之前的配置文件到内核源码目录下,命名为.config。
[root@localhost ~]# cp /boot/config-3.10.0-327.el7.x86_64 linux-4.5.2/.config

选择NTFS写入支持:
[root@localhost linux-4.5.2]# make menuconfig 这一步会读取之前复制过来的.config文件内容并做为初始值,在此基础加新的模块。
截图略:
File systems —>DOS/FAT/NT Filesystems —> 按空格选中 [*] NTFS write support 通过TAB切换选择save,根据提示一路保存

生成内核文件:
[root@localhost linux-4.5.2]# make bzImage
[root@localhost linux-4.5.2]# make modules
[root@localhost linux-4.5.2]# make modules_install
[root@localhost linux-4.5.2]# make install

更改默认启动项为最新内核:
[root@localhost ~]# vim /boot/grub2/grub.cfg
查看当前 menuentry 菜单入口
最新的为 ‘CentOS Linux (4.5.2) 7 (Core)’ 通过4.5.2是内核版本确认是刚安装的新内核

[root@localhost ~]# vim /boot/grub2/grubenv 更改为最新 menuentry
屏蔽原先内容,添加:
saved_entry=CentOS Linux (4.5.2) 7 (Core)

reboot机器
[root@localhost ~]# uname -a
Linux localhost.localdomain 4.5.2 #1 SMP Wed Apr 27 22:20:39 CST 2016 x86_64 x86_64 x86_64 GNU/Linux
看到内核为最新的了。

PS:
通过runlevel命令查看当前运行级别。 grub列表按E编辑,还是single为单用户模式,按ctrl+x启动,以前6版本为按B启动。

评论关闭