Shell 指令碼逐行替換檔案中的某一引數值

2022-06-19 14:09:17 字數 986 閱讀 2033

替換檔案中的某個引數,通常使用linux文字處理工具, awk 、sed 和 grep,可根據實際需要組合使用命令。

#!/bin/bash

#獲取檔案,通過指令碼引數引入

file=/data/test.log

#獲取檔案的行數

log_line=$(awk -f":" '' $file)

#定義迴圈規則,檔案有多少行,就迴圈多少次

for i in $log_line

do#定義要用來替換舊資料的新資料,可根據實際需求自定義

log_new="\""gpstesttocu$(( $i + 100000 ))"\""

#迴圈從每行獲取舊資料,可根據實際需求,使用awk進行抓取,一次獲取不到,可以多次使用awk,-f指定分隔符

log_old=$(awk -f":" '}' $file |awk -f"," '' )

#迴圈替換所在行的老資料,-e 使用變數替換 @是替換分割符,作用同斜線/相同,使用場景:被替換內容中包含斜線

sed -e "$i s@$log_old@$log_new@" -i $file

#顯示新定義的資料

echo $log_new

done

#完成後列印結果

echo "completed change log file. done!!!"

替換json檔案test.log某固定字段值

shell命令修改recvts值, 將recvts引數值所有數字替換為乙個新的時間,("recvts": )--引數名稱,[0-9]*-- 表示所有數字,(,)--表示保留後面分隔符,1'1626071361999',--替換後的新字段,開頭1表示"recvts": 不變

sed -i  's/\("recvts": \)[0-9]*\(,\)/\1'1626071361999',/g' test.log

shell替換檔案內容

由於工作需要,需將之前文字中所記錄的 全部替換成新的 操作如下 1.找到專案,檢視有哪些檔案有該字串 grep r 52776822 2.找到這些檔案所屬的頂級目錄,然後進行替換 find name htm print0 xargs 0 sed i s 52776822 77777777 g 3.檢...

Shell指令碼逐行讀取檔案

方法1 while迴圈中執行效率最高,最常用的方法。while read line doecho line done filename 注釋 這種方式在結束的時候需要執行檔案,就好像是執行完的時候再把檔案讀進去一樣。方法2 管道法 cat filename while read line cat f...

bat指令碼,複製替換檔案

每次替換 都要挨個專案手動ctrl v,那不如寫個指令碼自己copy替換 rem date 2018 10 17 rem author ljiemin echo off setlocal enabledelayedexpansion set source patch replace str tabl...