我需要帮助,否则我将使用 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
,因为它会用空格分隔,因此如果您的任何文件名包含空格,它们将被解释为多个文件名而不是一个文件名。