最近用做了一些处理文本的工作,发现shell真的比较方便,总结了一些小代码。
- 统计子目录下多个文件夹的行数
如果仅需要对单独文本
cat filename | wc -l
(会少一行,如果文件最后没有换行符)即可
- 删除目录下所有文件的最后一行换行符,生成新的文件
-
删除文件内每一行的最后一个内容
mac下vim filename 进入,
,wq 保存即可(会多出换行符)1,$s/.$//
- 判断两个文本的每一行是否相同
diff filename1 filename2
- shell脚本没有执行权限(Permission denied)
chmod +x xxx.sh
- 删除某一行
234d表示删除第234行
sed -e '234d' filename >> newFile
-
把不同文件夹下名字相同的文件写到一起(合并两个文件)
进入当前目录下
-
将目录下所有文件的特定行写入一个新的文件
将所有文件的第1行的内容写入new.txt
for x in *;do
num=
cat $x | while read line;do
num=$(($num+))
if [[ $num == 1 ]]; then
echo $x >> ../new.txt
fi
done
done
-
将目录下行数不符合要求的文件找出来
若文本不是4261行,移出这些文件
for x in *.txt;do
num=`cat $x | wc -l`
if [[ $num -ne 4261 ]]; then
echo $num
mv $x ../wrong/
fi
done
如果以后用到更复杂的再更新吧。