команды программирования DOS / UNIX с |вопрос для начинающих - PullRequest
0 голосов
/ 08 августа 2010

Я пытаюсь сделать следующее:

  1. получить последнюю строку файла: tail -n 1 test.csv

  2. если последняя строка - END, то продолжить (точка 3), иначе выйти

  3. получить количество строк в файле: wc -l test.csv

  4. поместите эти строки в новый файл без последней строки: head -n (длина -1) test.csv> testdone.csv

(или, если возможно, удалитеТОЛЬКО эта строка из файла)

Может кто-нибудь дать мне полный сценарий, как это сделать?

Большое спасибо, искал / пытался часами!

Ответы [ 4 ]

1 голос
/ 08 августа 2010

в unix / linux try (в файле скрипта):

#!/usr/bin/env bash
# 1
lastline=`tail -n 1 test.csv`

# 2
if [ "$lastline" == "END" ]; then
  exit
fi

# 3  (actually not needed)
num_lines=`wc -l < test.csv`

# 4 copy all except last line
sed \$d < test.csv > testdone.csv
0 голосов
/ 08 августа 2010

Какой размер входного файла?

Если он не слишком большой (менее 5 мегабайт), то AWK может вам помочь:

awk '{a [++ i] = $ 0} END {if (a [i] ~ / ^ END $ /) {удалить a [i]; for (i in a) {напечатать a [i]> > "done-" FILENAME}}} 'test.csv

0 голосов
/ 08 августа 2010

Попробуйте что-то вроде этого.

#! /usr/bin/env sh

FILENAME="input.csv"
OUT="output.csv"

echo "Last line:"`tail -n 1 $FILENAME`
linecount=`wc -l $FILENAME|cut -d " " -f 1`
echo "No of lines:$linecount"
linecount=`expr $linecount - 1`
head -n $linecount $FILENAME > $OUT
echo "Copied to $OUT"
0 голосов
/ 08 августа 2010

Получить последнюю строку файла: tail -n 1 test.csv.Это работает.Каков твой вопрос?

если эта последняя строка - END, то продолжить (точка 3), иначе выйти

Это не имеет смысла, поскольку «последняя строка файла» - последняя строка.Конец.Строк больше нет.

Получить количество строк в файле: wc -l test.csv.Это работает.Что у вас за вопрос?

поместите эти строки в новый файл без последней строки: head -n (length -1) test.csv > testdone.csv.

"Эти строки" расплывчаты, но показанный код выглядит великолепно.Какой у тебя вопрос?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...