您好,登錄后才能下訂單哦!
刪除文本、文件中的空行
實驗描述:
可同時處理一個或多個文件;
要求在用?sed?刪除空行之前先核實文件是否存在;
sed的輸出被導入一個文件名中含有$?$的臨時文件,最后將臨時文件移回原來的文件中;
使用shift命令取得所有的文件名,用while循環(huán)逐個處理所有的文件,直至處理完為止;
可以使用del.lines?--help獲得一個簡短的幫助信息。
實驗過程:
1:編寫一個腳本,名為del.lines:
截圖如下:
內(nèi)容如下:
#!/bin/bash
#?Script?takes?filename(s)?and?deletes?all?blank?lines.
TEMP_F="/tmp/del.lines.$$"
usage()
{
echo?"Usage:$0?file?[file...]"
echo?"try?$0?-help?for?more?info"
exit?1
}
if?[?$#?-eq?0?]?;
then
usage
fi
FILES=$1
While?[?$#?-gt?0?]
do
echo?"...$1"
case?$1?in
--help)
echo?"Use?this?script?to?delete?all?blank?lines?from?a?text?file(s)"
exit?0
;;
*)
FILE_NAME=$1
If?[?-f?$1?]
then
sed?'/^$/d'?$FILE_NAME?>?$TEMP_F
mv?$TEMP_F?$FILE_NAME
else
echo?"$0?cannot?find?this?file:?$1"
fi
shift
;;
esac
done
2.保存腳本并增加執(zhí)行權(quán)限:?chmod?+x?del.lines,執(zhí)行后腳本提示尋幫助:
3.?為了驗證腳本執(zhí)行效果:
添加兩個含有空行的無用數(shù)據(jù)腳本文件:
文件內(nèi)容截圖如下:
4.?執(zhí)行腳本并驗證效果:
注解:
basename命令能夠從路徑中分離出文件名。通常用于shell腳本中
shift語句用于遷移位置變量,將?$1~$9?依次向左傳遞
eg:
若當前腳本程序獲得的位置變量如下:
$1=file1、$2=file2、$3=file3、$4=file4
則執(zhí)行一次shift命令后,各位置變量為:
$1=file2、$2=file3、$3=file4
再次執(zhí)行shift命令后,各位置變量為:
$1=file3、$2=file4
.?.?.
5.?根據(jù)實際環(huán)境,進行相應(yīng)的腳本修改,以便為生產(chǎn)環(huán)境服務(wù)。
歡迎關(guān)注微信公眾號:小溫研習社
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。