linux 向空文件中插入空行

這篇文章可以回答以下問題
話題相關
#linux 向空文件中插入空行
#sed 不能向空文件中插入內容
#sed 不能處理空文件
#linux 向空文件中插入內容
#什麼是空文件
#把文件做成空文件
#shell代碼,做一個指定空行數文件

首先,什麼是空文件
空文件即文件大小爲0的文件。
比如用touch file.txttouch命令新建的文件,就是空文件。
文件大小可以通過ll命令來查看。

用echo命令 向空文件中插入空行

echo -e > file.txt

其中,-e是echo命令的一個參數,表示改行。
這個命令可以做一個有一行空行的文件file.txt。
即使file.txt本身是一個空文件,這個命令也將其變成一個有一行空行的文件。
>將指定內容替代文件內容,
>>將指定內容添加到文件最後。

# 多次執行可以增加空行的行數
echo -e >> file.txt

sed 不能向空文件中插入空行

先來看一下sed的定義。(不用仔細看,只需看到它是stream editor就好了)。

sed is a stream editor. A stream editor is used to perform basic text transformations on an input stream (a file or input from a pipeline). While in some ways similar to an editor which permits scripted edits (such as ed ), sed works by making only one pass over the input(s), and is consequently more efficient.
來源:https://www.gnu.org/software/sed/manual/sed.html

什麼是stream呢?

A stream is a sequence of bytes.
stream是一系列的字節。

sed是stream editor,用來編輯stream,處理基本的文本處理等。因爲空文件是0字節,也就沒有stream,sed自然也不能處理空文件。

向空文件中插入內容

echo命令直接寫入即可

## 寫入內容(文件全文變爲寫入的內容)
echo 'test' > file.txt

## 寫到在文件最後
echo 'test' >> file.txt

sed只能處理非空文件,關於sed插入文本,可以參考這篇文章,
文章鏈接sed 插入文本

shell代碼: 插入指定空行數

應用場景是,向一個文件內插入內容,如果文件中沒有指定的行號,將導致插入失敗。比如文件只有10行,要將內容插入到15行的場景。

#!/bin/bash
set -euo pipefail
# 指定要做成的文件名
file=line_test.txt
# 指定空行數
line_cnt=5

# 適用於本代碼,每次執行清空文件以保證文件行數是指定行數
cat /dev/null > $file

n=0
while [ $n -lt $line_cnt ]; do
	echo -e >> $file
        n=$((n+1))
done
echo "$n empty lines have been inserted in $file."

其中涉及,把一個文件做成空文件的知識點。

# 把文件做成空文件
cat /dev/null > file.txt

(以上。)

發佈了34 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章