将行插入文件中特定位置的简单方法

时间:2009-07-10 10:45:26

标签: shell sed awk

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

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

你能建议简单的方法吗? 感谢

5 个答案:

答案 0 :(得分:1)

awk 'f==1{print last}{last=$0;f=1}END{print "NEW WORD\n"$0}' file 

答案 1 :(得分:1)

也许有点简单:

(tail -1 "$OLDFILE"; echo "hello there"; tac "$OLDFILE" | tail -n +2) | tac > "$NEWFILE"

答案 2 :(得分: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"

答案 3 :(得分:1)

最简单的一个:

head -n -1 "$OLDFILE"
echo "hello there"
tail -1 "$OLDFILE"

答案 4 :(得分:0)

我能想到的最简单的一个

sed -i "$ i Text to add" file.txt