Shell-Script

如何在 Bash 中將文本附加到多個文本文件的開頭和結尾?

  • February 2, 2022

我有一個充滿文本文件的目錄。我的目標是將文本附加到所有它們的開頭和結尾。每個文件的開頭和結尾的文本都是相同的。

根據我從網上獲得的程式碼,這是附加到文件開頭的程式碼:

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就像已經說明的那樣,您可以分別使用ianda命令在匹配文件行之前和之後插入文本行。尚未顯示的是,您可以使用單行和一次處理多個文件來完成此操作。

下面將在第一行之前1i和最後一行之後插入一行$a。將為匹配 glob 的所有文件執行插入*.txt

sed -i -e '1ivar language = {' -e '$a};' -- *.txt

兩者ia不僅適用於行號,而且適用於與給定模式匹配的每一行。每當一行包含var y = 2;

sed -i -- '/var y = 2;/i//initialize variable y' *.js

引用自:https://unix.stackexchange.com/questions/65510