Shell-Script
如何在 Bash 中將文本附加到多個文本文件的開頭和結尾?
我有一個充滿文本文件的目錄。我的目標是將文本附加到所有它們的開頭和結尾。每個文件的開頭和結尾的文本都是相同的。
根據我從網上獲得的程式碼,這是附加到文件開頭的程式碼:
echo -e 'var language = {\n$(cat $BASEDIR/Translations/Javascript/*.txt)' > $BASEDIR/Translations/Javascript/*.txt
這是附加到文件末尾的程式碼。目標是
};
在每個文件的末尾添加文本:echo "};" >> $BASEDIR/Translations/Javascript/*.txt
我從中提取的範例用於對單個文件進行操作。我想我會嘗試使用萬用字元對多個文件進行操作,
*.txt
.我可能也會犯其他錯誤。無論如何,如何將文本附加到多個文件的開頭和結尾?
要將文本添加到您可以使用的文件中(使用 GNU 實現
sed
):sed -i '1i some string' file
附加文本很簡單
echo 'Some other string' >> file
最後要做的是將它放入一個循環中,該循環遍歷您打算編輯的所有文件:
for file in *.txt; do sed -i '1i Some string' "$file" && echo 'Some other string' >> "$file" done
您可以使用 GNU sed
sed
就像已經說明的那樣,您可以分別使用i
anda
命令在匹配文件行之前和之後插入文本行。尚未顯示的是,您可以使用單行和一次處理多個文件來完成此操作。下面將在第一行之前
1i
和最後一行之後插入一行$a
。將為匹配 glob 的所有文件執行插入*.txt
。sed -i -e '1ivar language = {' -e '$a};' -- *.txt
兩者
i
和a
不僅適用於行號,而且適用於與給定模式匹配的每一行。每當一行包含var y = 2;
:sed -i -- '/var y = 2;/i//initialize variable y' *.js