歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux下刪除文本、文件中的空行

Linux下刪除文本、文件中的空行

日期:2017/2/28 14:45:50   编辑:Linux教程

實驗描述:

可同時處理一個或多個文件;

要求在用 sed 刪除空行之前先核實文件是否存在;

sed的輸出被導入一個文件名中含有$ $的臨時文件,最後將臨時文件移回原來的文件中;

使用shift命令取得所有的文件名,用while循環逐個處理所有的文件,直至處理完為止;

可以使用del.lines --help獲得一個簡短的幫助信息。

實驗過程:

1:編寫一個腳本,名為del.lines:

截圖如下:

內容如下:

#!/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.保存腳本並增加執行權限: chmod +x del.lines,執行後腳本提示尋幫助:

3. 為了驗證腳本執行效果:

添加兩個含有空行的無用數據腳本文件:

文件內容截圖如下:

4. 執行腳本並驗證效果:

注解:

  • basename命令能夠從路徑中分離出文件名。通常用於shell腳本中

  • shift語句用於遷移位置變量,將 $1~$9 依次向左傳遞

eg:

若當前腳本程序獲得的位置變量如下:

$1=file1、$2=file2、$3=file3、$4=file4

則執行一次shift命令後,各位置變量為:

$1=file2、$2=file3、$3=file4

再次執行shift命令後,各位置變量為:

$1=file3、$2=file4

. . .

5. 根據實際環境,進行相應的腳本修改,以便為生產環境服務。

相關閱讀:

Linux下刪除文本文件中的所有空行 http://www.linuxidc.com/Linux/2008-10/16209.htm

Copyright © Linux教程網 All Rights Reserved