Как преобразовать строку в int в файл csv?

Я пытался это сделать, когда начал работать в Ubuntu. Когда вы помещаете LightTable в терминал, он ищет файл с именем LightTable в каталогах $PATH. вы можете поместить echo $PATH для получения каталогов.

Если вы хотите выполнить свою программу LightTable в ./opt/LightTable/deploy/LightTable, то что вам нужно сделать, поместите файл Light Table в /usr/games or /usr/bin.. Но это требует прав суперпользователя

откройте терминал с помощью Ctrl + Alt + T

, затем поставьте

Я предпочитаю создавать ярлык LightTable с помощью

[ f1]

Затем введите пароль SU. Затем вы можете получить доступ к своей программе с помощью LightTable в терминале

Вы можете поместить /usr/bin или /usr/local/bin вместо /usr/games, что-либо, что является каталогом $PATH, It doesn ' t должен быть таким, но я рекомендую вам поместить его в /usr/local/bin

Я также рекомендую вам изменить выходной файл как lightpath вместо LightPath

1
задан 14 September 2017 в 20:23

9 ответов

Мы можем использовать sed следующим образом:

sed -E 's/\:([0-9])([0-9])\..*"/\:\1\2"/g' fb.csv

Лучшее регулярное выражение было предоставлено @GlennJackman:

Двоеточие не является особым и не должно быть убежали. Вам не нужно записывать каждую цифру отдельно. Это не должно быть глобальной заменой, потому что первая из них будет удалять остальную часть строки: s/(:[0-9][0-9])\.[0-9]+/\1/:
sed -E 's/(:[0-9][0-9])\.[0-9]+/\1/' fb.csv

Самое облегченное решение без расширенного регулярного выражения было предоставлено @Dessert:

sed 's/\.[0-9]*"$/"/' fb.csv

Чтобы преобразовать третий столбец в целое число, если я правильно понял, мы должны добавить второе выражение:

sed -e 's/\.[0-9]*"$/"/' -e 's/\://g' fb.csv
[d9 ] Если выход выглядит адекватно, мы можем добавить опцию -i.bak, чтобы заменить значения в своих местах и ​​создать файл резервной копии одновременно:

sed -e 's/\.[0-9]*"$/"/' -e 's/\://g' fb.csv -i.bak

Ссылки: [!d11 ] Sed, редактор потока - gnu.org FreeBSD Man Pages: Sed | Ubuntu Man Pages: Sed GNU OS: обзор синтаксиса регулярных выражений RexExr - онлайн-инструмент для изучения, построения и amp; Проверить регулярные выражения

2
ответ дан 22 May 2018 в 18:27
  • 1
    pa4080 спасибо. Является ли тип строки в столбце Time преобразованным в int после команды? – Ayu 14 September 2017 в 21:16
  • 2
    Двоеточие не является особым и не нуждается в бегстве. Вам не нужно записывать каждую цифру отдельно. Это не должно быть глобальной заменой, потому что первая будет удалять остальную часть строки: s/(:[0-9][0-9])\.[0-9]+/\1/ – glenn jackman 14 September 2017 в 21:36
  • 3
    Спасибо, @glennjackman, я добавлю этот комментарий в ответ. Я все еще учусь :) – pa4080 14 September 2017 в 21:41
  • 4
    Похоже, ты на хорошем пути. Так держать – glenn jackman 14 September 2017 в 21:50
  • 5
    Почему не только sed 's/\.[0-9]*"$/"/' fb.csv? – dessert 14 September 2017 в 22:10

Мы можем использовать sed следующим образом:

sed -E 's/\:([0-9])([0-9])\..*"/\:\1\2"/g' fb.csv

Лучшее регулярное выражение было предоставлено @GlennJackman:

Двоеточие не является особым и не должно быть убежали. Вам не нужно записывать каждую цифру отдельно. Это не должно быть глобальной заменой, потому что первая из них будет удалять остальную часть строки: s/(:[0-9][0-9])\.[0-9]+/\1/: sed -E 's/(:[0-9][0-9])\.[0-9]+/\1/' fb.csv

Самое облегченное решение без расширенного регулярного выражения было предоставлено @Dessert:

sed 's/\.[0-9]*"$/"/' fb.csv

Чтобы преобразовать третий столбец в целое число, если я правильно понял, мы должны добавить второе выражение:

sed -e 's/\.[0-9]*"$/"/' -e 's/\://g' fb.csv

Если выход выглядит адекватно, мы можем добавить опцию -i.bak, чтобы заменить значения в своих местах и ​​создать файл резервной копии одновременно:

sed -e 's/\.[0-9]*"$/"/' -e 's/\://g' fb.csv -i.bak

Ссылки:

Sed, редактор потока - gnu.org FreeBSD Man Pages: Sed | Ubuntu Man Pages: Sed GNU OS: обзор синтаксиса регулярных выражений RexExr - онлайн-инструмент для изучения, построения и amp; Проверить регулярные выражения
2
ответ дан 18 July 2018 в 06:51

Мы можем использовать sed следующим образом:

sed -E 's/\:([0-9])([0-9])\..*"/\:\1\2"/g' fb.csv

Лучшее регулярное выражение было предоставлено @GlennJackman:

Двоеточие не является особым и не должно быть убежали. Вам не нужно записывать каждую цифру отдельно. Это не должно быть глобальной заменой, потому что первая из них будет удалять остальную часть строки: s/(:[0-9][0-9])\.[0-9]+/\1/: sed -E 's/(:[0-9][0-9])\.[0-9]+/\1/' fb.csv

Самое облегченное решение без расширенного регулярного выражения было предоставлено @Dessert:

sed 's/\.[0-9]*"$/"/' fb.csv

Чтобы преобразовать третий столбец в целое число, если я правильно понял, мы должны добавить второе выражение:

sed -e 's/\.[0-9]*"$/"/' -e 's/\://g' fb.csv

Если выход выглядит адекватно, мы можем добавить опцию -i.bak, чтобы заменить значения в своих местах и ​​создать файл резервной копии одновременно:

sed -e 's/\.[0-9]*"$/"/' -e 's/\://g' fb.csv -i.bak

Ссылки:

Sed, редактор потока - gnu.org FreeBSD Man Pages: Sed | Ubuntu Man Pages: Sed GNU OS: обзор синтаксиса регулярных выражений RexExr - онлайн-инструмент для изучения, построения и amp; Проверить регулярные выражения
2
ответ дан 24 July 2018 в 18:41

Использование sed:

sed -E 's/(.*)"([0-9]*:[0-9]*:[0-9]*)\.[0-9]*"/\1\2/' fb.csv

Избавление от :, чтобы можно было использовать последний столбец:

sed -Ee 's/(.*)"([0-9]*:[0-9]*:[0-9]*)\.[0-9]*"/\1\2/' -e 's/\://g' fb.csv
1
ответ дан 22 May 2018 в 18:27

Используйте awk, чтобы удалить что-либо после точки в последнем поле.

awk -F\" '{gsub(/\..*$/, "", $(NF-1) )}1' OFS=\" infile

и используйте следующую команду, если вам нужно выполнить вычисление разницы между двумя раз подряд в последовательных строках в секундах. [!d1 ]

awk -F\" 'function abs(x) {return x<0 ? -x : x} 
    { gsub(/\..*$/, "", $(NF-1) ) }
    NR>1{ split( $(NF-1), ary, /:/); t_sec= 3600*ary[1] + 60*ary[2] + ary[3];
          getline; N=$(NF-1); split( $N, ary, /:/); t_sec_N= 3600*ary[1] + 60*ary[2] + ary[3];
          print abs(t_sec - t_sec_N);
}' OFS=\" infile

, заимствованная из ответа @ glenn

1
ответ дан 22 May 2018 в 18:27

Используйте awk, чтобы удалить что-либо после точки в последнем поле.

awk -F\" '{gsub(/\..*$/, "", $(NF-1) )}1' OFS=\" infile

и используйте следующую команду, если вам нужно выполнить вычисление разницы между двумя раз подряд в последовательных строках в секундах.

awk -F\" 'function abs(x) {return x<0 ? -x : x} { gsub(/\..*$/, "", $(NF-1) ) } NR>1{ split( $(NF-1), ary, /:/); t_sec= 3600*ary[1] + 60*ary[2] + ary[3]; getline; N=$(NF-1); split( $N, ary, /:/); t_sec_N= 3600*ary[1] + 60*ary[2] + ary[3]; print abs(t_sec - t_sec_N); }' OFS=\" infile

, заимствованная из ответа @ glenn

1
ответ дан 18 July 2018 в 06:51

Использование sed:

sed -E 's/(.*)"([0-9]*:[0-9]*:[0-9]*)\.[0-9]*"/\1\2/' fb.csv

Избавление от :, чтобы можно было использовать последний столбец:

sed -Ee 's/(.*)"([0-9]*:[0-9]*:[0-9]*)\.[0-9]*"/\1\2/' -e 's/\://g' fb.csv
1
ответ дан 18 July 2018 в 06:51

Используйте awk, чтобы удалить что-либо после точки в последнем поле.

awk -F\" '{gsub(/\..*$/, "", $(NF-1) )}1' OFS=\" infile

и используйте следующую команду, если вам нужно выполнить вычисление разницы между двумя раз подряд в последовательных строках в секундах.

awk -F\" 'function abs(x) {return x<0 ? -x : x} { gsub(/\..*$/, "", $(NF-1) ) } NR>1{ split( $(NF-1), ary, /:/); t_sec= 3600*ary[1] + 60*ary[2] + ary[3]; getline; N=$(NF-1); split( $N, ary, /:/); t_sec_N= 3600*ary[1] + 60*ary[2] + ary[3]; print abs(t_sec - t_sec_N); }' OFS=\" infile

, заимствованная из ответа @ glenn

1
ответ дан 24 July 2018 в 18:41

Использование sed:

sed -E 's/(.*)"([0-9]*:[0-9]*:[0-9]*)\.[0-9]*"/\1\2/' fb.csv

Избавление от :, чтобы можно было использовать последний столбец:

sed -Ee 's/(.*)"([0-9]*:[0-9]*:[0-9]*)\.[0-9]*"/\1\2/' -e 's/\://g' fb.csv
1
ответ дан 24 July 2018 в 18:41

Другие вопросы по тегам:

Похожие вопросы: