У меня есть файл csv
, вершина которого выглядит следующим образом:
s_m_title
,,
7988114_lig2
7988114_lig2
7988114_lig3
7988114_lig2
7982570_lig2
7982570_lig2
9081391_lig2
9081391_lig2
6555615_lig
7988114_lig2
Я хочу удалить каждую строку, которая не начинается с цифр. Затем я запустил команду sed
, чтобы напечатать каждую строку, содержащую число, в новый файл csv
.
sed -n -e '/1/{p;n;}' -e '/2/{p;n;}' -e '/3/{p;n;}' -e '/4/{p;n;}' -e '/5/{p;n;}' -e '/6/{p;n;}' -e '/7/{p;n;}' -e '/8/{p;n;}' -e '/9/{p;n;}' test_all.csv > improved2.csv
Верх этого нового файла csv
выглядит следующим образом:
7988114_lig2
7988114_lig2
7988114_lig3
7988114_lig2
7982570_lig2
7982570_lig2
9081391_lig2
9081391_lig2
7988114_lig2
Команда sed
правильно удалила s_m_title
и ,,
, но также была удалена 6555615_lig
. Почему?
Я понял, что если я сделаю это в виде двух команд,
sed '/,,/d' test_all.csv > improved3.csv
sed '/s_m_title/d' improved3.csv > improved2.csv
Я получу правильный вывод безудаляется любая из пронумерованных строк. Так почему же при использовании sed
удаляются некоторые пронумерованные строки?