创建一个新文件,在第一行添加一行,在最后一行添加一行

创建一个新文件,在第一行添加一行,在最后一行添加一行

我需要帮助,否则我将使用 python 来做这件事(一次读一行),我知道我不需要这样做。

我使用 find 获取了大量的文本文件。

FILES=$(find ... -iname "*.txt")
num=0
for doc in $FILES; do
     echo "start string" > cat $doc > echo "end string" > "outfile$num.txt"
     let num=num+1
done

我不知道很多 unix 命令,但我想做的事情是这样的:

输出“start string”然后 cat $doc 然后“end string”到 stdout 并存储在 outfile 中。

感谢您的帮助!!

答案1

使用

{echo "start string"; cat $doc; echo "end string"} > "outfile$num.txt"

或者:

echo "start string" > "outfile$num.txt"
cat $doc >> "outfile$num.txt"
echo "end string" >> "outfile$num.txt"

或者另一个使用 sed 的示例(您可以使用 awk 做类似的事情):

sed -e '1i start string;$a end string' $doc > "outfile$num.txt"

在第一个例子中,三个命令只是按顺序执行,然后将输出作为整体输入到输出重定向> "outfile$num.txt"

在第二个例子中,我们用三个命令来执行此操作,并使用>>运算符而不是>运算符将输出连接到给定的文件,而不是用输出替换给定的文件。

另外,顺便说一下,您在使用时应小心for doc in $FILES,因为它会用空格分隔,因此如果您的任何文件名包含空格,它们将被解释为多个文件名而不是一个文件名。

相关内容