shell指令碼實現相關文字和資料夾操作

2021-08-29 04:08:39 字數 1794 閱讀 6770

shell指令碼實現某些文字/檔案和資料夾功能.

資料在指令碼的上層資料夾data內,在scripts資料夾內執行該指令碼,按格式得到需要的event.cat檔案.

在此做一記錄, 以便以後檢視.

#!/bin/bash

#以要求格式生成event.cat

#在資料檔案上一級目錄的srcipts檔案內執行

eventid=(`cut -d' ' -f1 iddir.dat`) #獲取iddir.dat的第一列,**id,寫入eventid陣列;

echo $

evdir=(`cut -d' ' -f2 iddir.dat`) #獲取iddir.dat的第二列,**事件目錄名,寫入evdir陣列;

echo $

length=$ #獲取陣列長度

echo "$length"

cd ../data

for file in ./* #遍歷該檔案data下所有資料夾

docd ./$file

path=$pwd

ls >$file.dat #將檔案中的所有檔案寫入$file.dat

sed -i '1d' ./$file.dat #刪除$file.txt最後一行

echo "$path"

echo "$file"

filename=`echo $file | cut -d \/ -f 2` #將字串$file以/分割,取第2部分(檔名),賦值給filename.

echo "$filename"

#將絕對路徑加到路徑裡,得到$file.dat3

filenm=($(awk '' $file.dat))

length2=$

for((i=0;i < length2;i++))

dofilename2=`echo $ | cut -d \/ -f 2`

echo "$path""/""$filename2" >> $file.dat3

done

for((i=0;i < length;i++))

doif [[ $ = $filename ]] #為該資料夾的**事件尋找匹配的**id,賦值給evid.

then

evid=$

echo "$evid"

fidone

evlist=($(awk '' $file.dat3))

length1=$

#將**id寫入evid.txt

for(( i=0;i>evid.dat

done

#將$file.dat3每 3行寫成一行,寫入$file.dat1

for(( i=0;i> $file.dat1

done

#將台站名寫入$file.dat2檔案行首

awk -f"." '' $file.dat1>$file.dat2

echo "evid: $evid"

#將事件id寫入$file.dat2檔案第1行和第2行中間

awk '' $file.dat2 >$file.txt

#cp $file* ../

cp *.txt ../../scripts/

rm $file.*

rm *.dat

#rm *.txt

cd .. #返回上級資料夾-data資料夾

done

#將幾個.txt檔案合併為乙個檔案event.cat

cd ../scripts

cat *.txt>>event.cat

rm *.txt

經測試,成功執行.

Shell指令碼相關

引數處理 說明 傳遞到指令碼的引數個數 以乙個單字串顯示所有向指令碼傳遞的引數。如 用 括起來的情況 以 1 2 n 的形式輸出所有引數。指令碼執行的當前程序id號 後台執行的最後乙個程序的id號 與 相同,但是使用時加引號,並在引號中返回每個引數。如 用 括起來的情況 以 1 2 n 的形式輸出所...

CSS字型和文字相關

目前在做ife的練習,初步學習到css內容,所以做了總結。本博文主要分為兩部分,第一部分介紹css字型屬性,第二部分則介紹了文字常用屬性 s1 首先介紹一下什麼是字型系列 所謂字型系列,我理解的就同一字型下 的不同風格的具體字型的集合。通俗模擬一下,我們知道楷書下有不同風格的字型,比如顏體 柳體 瘦...

shell 文字和檔案批量處理

將檔名中包含aa aa 的字元去掉 bin bash catch string aa aa for i in find name catch string do newname echo i sed e s aa aa echo newname mv i newname done 顯示乙個檔案中的i...