linux shell脚本无法执行,报错syntax error near unexpected token `$'\r''解决方法
運行shell腳本時出現:syntax error near unexpected token `$'\r“的錯誤,一般是格式的問題,比如直接從txt文檔拷貝過來的內容;
解決方法:sed -i 's/\r//g' test.sh
sed遵循簡單的工作流:
默認是顯示修改后內容,不會修改原文件,除非使用-i?參數。
常用參數及命令
sed [-nefri]??'command'?test.txt??(盡量按照標準格式使用單引號)
| sed | ? | 處理文本文件,并輸出到標準輸出(控制臺) | ? | command | ? |
| ? | -e | 可以指定多個命令 | ? | a | 新增 |
| ? | -f | 指定命令文件 | ? | c | 替換 |
| ? | -n | 取消默認控制臺輸出,與p一起使用可打印指定內容 | ? | d | 刪除 |
| ? | -i | 輸出到原文件,靜默執(zhí)行(修改原文件的意思) | ? | 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/系統(tǒng)/00/g' -e '2d' test.txt | 執(zhí)行多個指令 |
?
參數?-f
| sed -f ab.log test.txt | 多個命令寫進ab.log文件里,一行一條命令,效果同-e |
?
溫馨提示
若不指定行號,則每一行都操作。
$代表最后一行,雙引號內的$代表使用變量。
總結
以上是生活随笔為你收集整理的linux shell脚本无法执行,报错syntax error near unexpected token `$'\r''解决方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 命令行选项解析函数:getopt()
- 下一篇: QTcreator 多线程(生产者消费者