1. 程式人生 > 其它 >【sed】sed -i命令追加多行內容到指定檔案的指定位置

【sed】sed -i命令追加多行內容到指定檔案的指定位置

技術標籤:shellshell

不多說,直接上我寫的一個測試指令碼的程式碼,後面有驗證結果。

#!/bin/bash
#for test add content from src_file to dest_file at specified place.
 
echo "hello, begin..."
echo ""
 
src_file=${PWD}"/src_file"
dest_file=${PWD}"/dest_file_dir/dest_file"
 
function for_test ()
{
	test=`sed -i '2i\insert this line' $dest_file`
	echo $test
	echo "****************"
	cat $dest_file
}
 
function add_content_src_to_dest_file ()
{
	delimit_line="==========================================="
 
	# sed -i "2i\\insert line" file 該sed命令使用的是-i引數指定i\選項,在第2行後插入內容
	# 2i\\ 拆解3部分:2為行號,i\為sed行下追加命令,\為轉義字元(必須轉義讀取變數)
	# "" 雙引號,保持引號內的字面值,可讀\$轉義後的變數內容,單引號不行。
	echo $delimit_line | sed -i "2i\\$delimit_line" $dest_file
	cat $src_file | while read line
	do
		echo $line | sed -i "3i\\$line" $dest_file
	done
	
	#cat $dest_file
}
 
 
#for_test
add_content_src_to_dest_file
 
echo ""
echo "hey, end..."
exit 0

將src_file裡的檔案內容,以dest_file的同樣格式一次性放到dest_file的第二行開始的位置,並且不影響dest_file的其他內容。

原始檔的現有內容

[[email protected]_master test]# cat src_file 
1
2
3
4
5

目標檔案的現有內容

[[email protected]_master test]# cat dest_file_dir/dest_file 
a
b
c
d
e
f

指令碼執行後,將src_file所有內容插入在目標檔案第2行開始的位置,並加了分割線保持dest_file檔案格式。

[[email protected]
_master test]# sh /data/scripts/insert.sh hello, begin... a =========================================== 5 4 3 2 1 b c d e f hey, end...

以上結果發現追加到指定位置是倒敘插入的,為正確追加到指定位置內容不發現改變,只需把追加的內容倒敘寫入即可!