2013-09-13 3 views
-2

Пожалуйста, помогите мне с этим. Я хочу, чтобы преобразовать файлВставка пустой строки между строками, которая начинается с другого номера

1.0 0.1 0.02 
1.0 0.2 0.04 
1.1 -0.2 0.1 
1.1 -0.1 0.1 
1.2 1.0 0.2 

в

1.0 0.1 0.02 
1.0 0.2 0.04 

1.1 -0.2 0.1 
1.1 -0.1 0.1 

1.2 1.0 0.2 
+0

Какие критерии для вставки строки между строками? –

ответ

2

Вы можете сделать это с awk:

pax> echo '1.0 0.1 0.02 
1.0 0.2 0.04 
1.1 -0.2 0.1 
1.1 -0.1 0.1 
1.2 1.0 0.2' | awk 'last!=""&&last!=$1{print""}{print;last=$1}' 

Выход что:

1.0 0.1 0.02 
1.0 0.2 0.04 

1.1 -0.2 0.1 
1.1 -0.1 0.1 

1.2 1.0 0.2 

Разбирая его, last изначально устанавливается в пустую строку. Код затем:

last != "" && last != $1 { print "" } 
         { print; last = $1} 

Это первый пункт будет выбрать все строки ввода, где первое поле не соответствует предыдущему первому полю (кроме первой строки ввода). Если он соответствует, он выводит пустую строку.

Второе предложение выбирает все входные строки (без состояния) и просто выводит текущую строку ввода и сохраняет первое поле в переменной last для использования в следующей строке ввода.

0

Во-первых, вам нужно пройти через строки файла. Что-то вроде

while read line 
do 
    # some logic here 
done < file_to_read.txt 

теперь вместо «какая-то логика здесь,» вам нужно проверить, если первый номер такой же, как в предыдущей строке. Что-то вроде

if [[ "$prevnum" != "$curnum" ]] 
then 
    echo 
fi 

Вы можете получить первое место deliminated число, используя что-то вроде

set -- $line 
curnum=$1 

или еще

curnum=$(echo $line | awk '{print $1}') 

или

curnum=$(echo $line | cut -d' ' -f2) 

Я дам вам ставить это вместе оттуда.

Смежные вопросы