Простой способ вставить строку в определенную позицию в файле - PullRequest
1 голос
/ 10 июля 2009

Мне нужно вставить строку в текстовый файл, например, перед первой строкой с конца.

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 ]

1 голос
/ 10 июля 2009

Самый простой:

head -n -1 "$OLDFILE"
echo "hello there"
tail -1 "$OLDFILE"
1 голос
/ 10 июля 2009

Может быть немного проще:

(tail -1 "$OLDFILE"; echo "hello there"; tac "$OLDFILE" | tail -n +2) | tac > "$NEWFILE"
1 голос
/ 10 июля 2009

Другое (чисто 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"
1 голос
/ 10 июля 2009
awk 'f==1{print last}{last=$0;f=1}END{print "NEW WORD\n"$0}' file 
0 голосов
/ 11 июля 2012

Самый простой, который я мог придумать

sed -i "$ i Text to add" file.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...