1、shell脚本调试
sh -x install.sh
2、运行.sh脚本提示 '\r' command not found
dos2unix install.sh
3、sed [-nefr] [动作] 文件
参数:
-n 安静模式,在sed处理的时候,所有来自STDIN的数据都会被输出到终端,加上-n会只输出处理的哪行
-e 直接在命令列上进行sed动作编辑
-f 直接将sed的动作写在文件内
-r sed动作支持延伸的正则表达(默认只是基础正则)
-i 直接修改文件内容(慎用,尤其是用系统文件做练习的时候)
动作:
a append:增加,在当前行的下一行增加
c :取代,取代n1到n2之间的行
d delete:删除
i 插入,目前行的上一行插入
p 打印,常常与-n使用
s 取代,s/old/new/g ; s#old#new#g
https://blog.csdn.net/hello_hwc/article/details/40118129
4、cut
cut命令可以从一个文本文件或者文本流中提取文本列。
cut语法
[root@www ~]# cut -d'分隔字符' -f fields <==用于有特定分隔字符
[root@www ~]# cut -c 字符区间 <==用于排列整齐的信息
选项与参数:
-d :后面接分隔字符。与 -f 一起使用;
-f :依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思;
-c :以字符 (characters) 的单位取出固定字符区间;
5、echo $ret 和 echo "$ret" 区别
如果是echo $ret,输出结果为一行,没有换行符
如果是echo "$ret",输出结果为多行,有换行符
6、linux去掉windows下文件中的\r
Unix体系里,每行结尾只有“<换行>”,即“\n”;
Windows体系里面,每行结尾是“<换行><回 车>”,即“\n\r”。
一个直接结果是,Unix体系下的文件在Windows里打开的话,所有文字会变成一行;
而Windows里的文件在Unix下打开的话,在每行的结尾可能会多出一个^M符号。
好了,所以我的题目就出在被处理惩罚的文件的每行末尾都有^M符号,而这凡是是看不出来的。可以用”cat -A test.file”号令查看。是以当我想在行尾添加字符的时辰,它老是添加在行首且会覆盖掉本来行首的字符。
使用vim方式处理
在vim命令模式下输入%s/^M$//g
回车即会自动删除该文件中的所有 ^M 字符。
那么,这句命令到底是什么意思呢?% 指匹配整个文件,s 是置换的意思,^M 注意要用 Ctrl + V Ctrl + M 来输入,M 后面的 $ 代表匹配行尾的内容,最后的 g 则表示每行中匹配到的内容都要置换。
理解了命令的含义,就好变通使用了,比如说,要将某个文件中的 Vim 全部替换成 VIM,则可以使用这样的命令::%s/Vim/VIM/g。
方法1:
在命令模式下:输入:%s/^M//g 然后,回车即可替换
注,其中”^M”的输入,分别是“Ctrl+v”、“Ctrl+M”键生成的
方法2:
使用vi打开文本文件
vi dos.txt
命令模式下输入
:set fileformat=unix
:w
方法3:
使用sed 工具
sed ’s/^M//’ filename > tmp_filename
方法4:
既然window下的回车符多了‘\r’,那么当然通过删除‘\r’ ,也可以实现:
tr -d ‘\r’
方法5:(最常用的方法)
在终端下敲命令:
$ dos2unix filename
直接转换成unix格式,就OK了!~
https://blog.csdn.net/lovelovelovelovelo/article/details/79239068
1万+

被折叠的 条评论
为什么被折叠?



