linux shell脚本无法执行,报错syntax error near unexpected token `$'\r''解决方法

运行shell脚本时出现:syntax error near unexpected token `$'\r“的错误,一般是格式的问题,比如直接从txt文档拷贝过来的内容;

解决方法:sed -i 's/\r//g' test.sh

sed遵循简单的工作流:

  1. 读取(从输入中读取某一行)
  2. 执行(在某一行上执行sed命令)
  3. 显示(把结果显示在输出中)

默认是显示修改后内容,不会修改原文件,除非使用-i 参数。

常用参数及命令

sed [-nefri]  'command' test.txt  (尽量按照标准格式使用单引号)

sed

 

处理文本文件,并输出到标准输出(控制台)

 

command

 

 

-e

可以指定多个命令

 

a

新增

 

-f

指定命令文件

 

c

替换

 

-n

取消默认控制台输出,与p一起使用可打印指定内容

 

d

删除

 

-i

输出到原文件,静默执行(修改原文件的意思)

 

i

插入

 

 

 

 

p

打印,要和-n参数一起使用

 

 

 

 

s

替换(匹配局部替换)

 

新增 a

sed '2a testContent' test.txt

在第 2 行后面新增一行内容

sed '1,3a testContent' test.txt

在原文的第 1~3 行后面各新增一行内容

替换 c

sed '2c testContent' test.txt

将第 2 行内容整行替换

sed '1,3c testContent' test.txt

将第 1~3 行内容替换成一行指定内容

删除 d

sed '2d' test.txt

删除第 2 行

sed '1,3d' test.txt

删除第1~3行

插入 i

sed '2i testContent' test.txt

在第 2 行前面插入一行内容

sed '1,3i testContent' test.txt

在原文的第 1~3 行前面各插入一行内容

打印 p

sed '2p' test.txt

重复打印第 2 行

sed '1,3p' test.txt

重复打印第1~3行

sed -n '2p' test.txt

只打印第 2 行

sed -n '1,3p' test.txt

只打印第 1~3 行

sed -n '/user/p' test.txt

打印匹配到user的行,类似grep

sed -n '/user/!p' test.txt

! 反选,打印没有匹配到user的行

sed -n 's/old/new/gp' test

只打印匹配替换的行

替换 s

sed 's/old/new/' test.txt

匹配每一行的第一个old替换为new

sed 's/old/new/gi' test.txt

匹配所有old替换为new,g 代表一行多个,i 代表匹配忽略大小写

sed '3,9s/old/new/gi' test.txt

匹配第 3~9 行所有old替换为new

 

参数 -e

sed -e 's/系统/00/g' -e '2d' test.txt

执行多个指令

 

参数 -f

sed -f ab.log test.txt

多个命令写进ab.log文件里,一行一条命令,效果同-e

 

温馨提示

若不指定行号,则每一行都操作。

$代表最后一行,双引号内的$代表使用变量。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值