0x00 Windows&Linux换行符
Windows换行符是\r\n ,Linux换行符是\n,一些处理Shell命令:
sed -e 's/.$//' dos.txt > linux.txt # 删除最后一个字符,删掉\r,不推荐,如果最后不是\r,则字符会被删掉
#系统命令:
dos2unix [-kn] file [newfile] #dos到unix
unix2dos [-kn] file [newfile] #unix到dos
参数:
-k : 保留该文件原来的mtime时间格式(不更新文件上次内容经过修改的时间)
-n : 保留原来的旧文件,将转换后的内容输出到新文件,如:dos2unix -n old new
sed -e 's/^M//g' $file # ^M,unix环境表示Windwos换行符,按住CTRL+v,松开v,按m输入,复制无效
推荐使用最后一条
0x01 去空行
cat $file | tr -s ‘\n’
cat $file | sed ‘/^$/d’
cat $file | awk ‘{if($0!="")print}’
cat $file | awk ‘{if(length !=0) print $0}’
grep -v “^$” $file
0x02 去重复行
sort -n $file | sed '$!N; /^\(.*\)\n\1$/!P; D'
sort $file | uniq
0x03 去空格
echo $S |tr -d ' '
echo $S |tr ' ' '/0'
0x04 去空格和制表符号
sed 's/[ \t]*//g' file
sed 's/[[:space:]][[:space:]]*//g' file
0x05 设置ASCII环境去除acsii码32~126之外的字符
LANG=C grep -v '[^[:graph:]]' graph.list # LANG=C 不能少,否则只要能显示字符都会保留,比如中文
0x06 命令整合
去空格和制表符-->去非ascii码32~126-->排序-->去重复-->去空行
sed -e 's/[ \t]*//g' *.list | LANG=C grep -v '[^[:graph:]]' | sort | uniq | sed '/^$/d' > new.list
0x07 文本列分割
awk 'BEGIN{FS=":"}{print $1}' file # FS 设置列分割符,$0是整行,$1是第一列,以此类推
Windows换行符是\r\n ,Linux换行符是\n,一些处理Shell命令:
sed -e 's/.$//' dos.txt > linux.txt # 删除最后一个字符,删掉\r,不推荐,如果最后不是\r,则字符会被删掉
#系统命令:
dos2unix [-kn] file [newfile] #dos到unix
unix2dos [-kn] file [newfile] #unix到dos
参数:
-k : 保留该文件原来的mtime时间格式(不更新文件上次内容经过修改的时间)
-n : 保留原来的旧文件,将转换后的内容输出到新文件,如:dos2unix -n old new
sed -e 's/^M//g' $file # ^M,unix环境表示Windwos换行符,按住CTRL+v,松开v,按m输入,复制无效
推荐使用最后一条
0x01 去空行
cat $file | tr -s ‘\n’
cat $file | sed ‘/^$/d’
cat $file | awk ‘{if($0!="")print}’
cat $file | awk ‘{if(length !=0) print $0}’
grep -v “^$” $file
0x02 去重复行
sort -n $file | sed '$!N; /^\(.*\)\n\1$/!P; D'
sort $file | uniq
0x03 去空格
echo $S |tr -d ' '
echo $S |tr ' ' '/0'
0x04 去空格和制表符号
sed 's/[ \t]*//g' file
sed 's/[[:space:]][[:space:]]*//g' file
0x05 设置ASCII环境去除acsii码32~126之外的字符
LANG=C grep -v '[^[:graph:]]' graph.list # LANG=C 不能少,否则只要能显示字符都会保留,比如中文
0x06 命令整合
去空格和制表符-->去非ascii码32~126-->排序-->去重复-->去空行
sed -e 's/[ \t]*//g' *.list | LANG=C grep -v '[^[:graph:]]' | sort | uniq | sed '/^$/d' > new.list
0x07 文本列分割
awk 'BEGIN{FS=":"}{print $1}' file # FS 设置列分割符,$0是整行,$1是第一列,以此类推