Нет. Если есть проблема с подключением к одному из дисков, есть вероятность, что во время копирования может произойти повреждение, но сама команда cp
не вызовет повреждения. Вы упомянули разрешения и временные метки; они хранятся не в самом файле, а в метаданных. Команда cp
может (и часто это делает) изменять метаданные.
Если указанные выше 7 строк остаются постоянными после выполнения команды каждый раз, используйте:
yourcommand | sed 1,7d | awk '{print $2}'
sed 1,7d
просто скроет первые 7 строк, которые вам не нужны. awk
отсортирует именно то содержимое, которое вы действительно ищете ...
cat yourcommand_out | sed 1,7d | awk '{print $2}'
20.00
20.00
23.75
23.75
27.52
27.52
31.30
31.30
35.08
35.08
38.87
38.87
42.67
42.67
46.48
46.48
50.29
50.29
54.12
54.12
57.95
57.95
61.79
61.79
65.64
65.64
69.50
69.50
73.37
73.37
77.25
77.25
81.14
Мы можем проверить, начинается ли первое поле с числа, и просто напечатать второе
awk '$1 ~ /^[0-9][0-9]*$/ { print $2}' electric_thermal.dat > nset_output.dat
Это соответствует вашему исходному файлу и возвращает
20.00
20.00
23.75
23.75
27.52
27.52
31.30
31.30
....
Попробуйте следующее:
awk '/^[ ]*[[:digit:]]/ {print $2}' inputFile
awk
- ваш друг:
awk '$1 ~ /^[[:digit:]]+$/{print $2}' electric_thermal.dat >outfile
должен это сделать
{ {1}}Предполагая, что достаточно проверить цифру в первом столбце:
awk '$1 ~ /[0-9]/ { print $2 }' data.in >data.out
Чтобы убедиться, что это применяется только к строкам после строки NSET_OUTPUT
, вы можете сделать что-то вроде следующего:
sed '1,/NSET_OUTPUT/d' data.in | awk '$1 ~ /[0-9]/ { print $2 }' >data.out
Это приведет к удалению строк перед NSET_OUTPUT
и отправке остальных в сценарий awk
.
Ваш скрипт будет выводить только одно число, поскольку он, для каждой строки ввода , будет искать NSET_OUTPUT
, и, если он найден, пропускает пять строк перед извлечением числа из второго столбец.
Ниже приведена фиксированная версия вашего скрипта:
BEGIN { print_values = 0 }
$12 ~ /NSET_OUTPUT/ {
for (i = 1; i <= 5; i++) {
getline;
}
print_values = 1;
}
print_values == 1 {
x = $2;
print x >"nset_output.dat"
}
Comando
awk '$1 ~ /^[0-9]*$/{print $2}' file name
output
20.00
20.00
23.75
23.75
27.52
27.52
31.30
31.30
35.08
35.08
38.87
38.87
42.67
42.67
46.48
46.48
50.29
50.29
54.12
54.12
57.95
57.95
61.79
61.79
65.64
65.64
69.50
69.50
73.37
73.37
77.25
77.25
81.14