1

我需要将字符串插入文本文件,例如,在末尾的第一行之前。

STRINGS=`wc -l $OLDFILE \
    | awk '{print $1-1}' \
    | sed "s/$DOLLAR/+/g" \
    | tr -d \\\n \
    | sed "s/+$DOLLAR//" \
    | bc`
ADDFILE=$3
head -n $STRINGS $OLDFILE > $NEWFILE
cat $ADDFILE >> $NEWFILE
tail -n 1 $OLDFILE >> $NEWFILE

您能建议执行此操作的简单方法吗?谢谢

4

5 回答 5

1
awk 'f==1{print last}{last=$0;f=1}END{print "NEW WORD\n"$0}' file 
于 2009-07-10T10:56:05.810 回答
1

也许更简单一点:

(tail -1 "$OLDFILE"; echo "hello there"; tac "$OLDFILE" | tail -n +2) | tac > "$NEWFILE"
于 2009-07-10T10:58:49.160 回答
1

另一个(纯bash)解决方案:

prev=
print=
IFS=
while read -r line; do
    if [ "$print" ]; then
        echo "$prev"
    fi
    print=1
    prev="$line"
done < "$OLDFILE"
echo "hello there"
echo "$prev"
于 2009-07-10T11:03:20.117 回答
1

最简单的一个:

head -n -1 "$OLDFILE"
echo "hello there"
tail -1 "$OLDFILE"
于 2009-07-10T11:05:00.003 回答
0

我能想到的最简单的

sed -i "$ i Text to add" file.txt
于 2012-07-11T02:38:25.833 回答