最近用做了一些處理文本的工作,發現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
如果以後用到更複雜的再更新吧。