Единственный способ воспроизвести вашу проблему — это если файл действительно содержит точки с запятой в качестве разделителей и каждая строка заканчивается парой \r\n
. Когда это происходит, использование \r
в качестве RS приводит к тому, что \n
оказывается на следующей строке.
Исходный файл используется:
Id,Day,UserId,ItemId
1,12/1/17 0:03,2323,tv
2,12/14/17 7:10,4546,frr
3,1/22/18 14:11,2421,fdf
4,2/16/18 13:36,4545,dfdf
5,3/5/18 10:47,1232,dfsdf
Самое простое решение — удалить \r
в файле (, возможно, с помощью dos2unix ).
Проще сделать это внутри awk:
$ awk '{gsub(/\r/,"")}; NR==1 {print $0,"MonthYear"}; NR>1 {print $0,$2"/"$4}' FS="[,/ ]" OFS=, Test.csv
Id,Day,UserId,ItemId,MonthYear
1,12/1/17 0:03,2323,tv,12/17
2,12/14/17 7:10,4546,frr,12/17
3,1/22/18 14:11,2421,fdf,1/18
4,2/16/18 13:36,4545,dfdf,2/18
5,3/5/18 10:47,1232,dfsdf,3/18
/mnt
занят двумя процессами :оболочкой, выполняющей ваш скрипт, и самим sudo
. Вы не можете изменить их рабочие каталоги из вашей корневой оболочки.
Вы можете либо изменить свой сценарий, чтобы он не cd
попадал в вашу точку монтирования, либо использовать umount -l
перед выходом из вашей корневой оболочки. Последний будет лениво размонтироваться, а когда вы выйдете из оболочки, sudo
и родительская оболочка тоже выйдут, освободив точку монтирования.
Если вы хотите также закрыть том LUKS, лучше всего добавить это в свой скрипт:
sudo cryptsetup open /dev/sda3 dm_crypt && sudo mount -t btrfs /dev/mapper/dm_crypt /mnt && cd /mnt && ls -la && sudo -s
cd - && sudo umount /mnt && sudo cryptsetup close dm_crypt