С тех пор как я написал вопрос, я понял, что мне не хватает /. Но разве сталь не работает !! Я думал, что это могут быть пробелы, но я уже исправил эту проблему, и она все еще не работает ...
Это мой реальный случай:
header.txt
2019 11 16 46 6.4183 -29.23337 -71.06854 5.0000 NOEVID 0.116 5.612 4.0 5.0 20.0 21.0 9 7 16
complete-data.txt
2019 11 2 48 45.5745 -29.14132 -71.05508 54.6150 NOEVID 0.215 5.799 8.0 12.0 19.0 23.9 6 6 12
- CP50 2019 11 2 48 57.169 P 0.601 0.588
- CP50 2019 11 2 49 5.164 S 1.472 0.354
- CP51 2019 11 2 48 55.744 P 0.254 -0.044
- CP51 2019 11 2 49 3.199 S 0.910 -0.250
2019 11 16 46 6.4183 -29.23337 -71.06854 5.0000 NOEVID 0.116 5.612 4.0 5.0 20.0 21.0 9 7 16
- CP50 2019 11 16 46 16.120 P 0.351 0.097
- CP51 2019 11 16 46 15.205 P 0.247 -0.099
- CP52 2019 11 16 46 16.950 P 0.382 0.104
2019 12 0 45 30.5744 -29.01455 -71.32178 37.2900 NOEVID 0.093 6.448 7.0 5.0 12.0 14.8 10 10 20
- C59B 2019 12 0 45 58.219XS 4.500 0.098
- CP02 2019 12 0 45 54.504*P 0.691 2.203
- CP02 2019 12 0 46 7.929 S 1.412 -0.563
Мой сценарий:
input="header.txt"
while IFS= read line
do
j=$(printf "%s\n" "$line")
echo "$j"
sed -n "/$j/,/^ *$/p" complete-data.txt >> new-file.txt
done < "$input"
Когда язапустите этот скрипт, new-file.txt пуст. Я попытался изменить последнюю строку:
done < "$input" > new-file.txt
, но выходной файл все еще пуст
НО! если я запускаю его вручную:
sed -n "/2019 11 16 46 6.4183 -29.23337 -71.06854 5.0000 NOEVID 0.116 5.612 4.0 5.0 20.0 21.0 9 7 16/,/^ *$/p" complete-data.txt >> new-file.txt
Это работает !!