Предварить столбец в CSV-файле в Linux, передав параметры

Обычный способ запустить модуль при передаче параметра — использовать экземпляры и запустить unit@parameter, а затем восстановить это значение внутри модуля с помощью %I. Например, используя --userдля тестирования, файл~/.config/systemd/user/tryfail.service:

[Unit]
User=otheruser
OnFailure=fail@otheruser.service
[Service]
ExecStart=/bin/bash -c 'sleep 3;exit 7'

и~/.config/systemd/user/fail@.service

[Unit]
Description=%I Instance of Fail Service
[Service]
ExecStart=/bin/bash -c 'echo got %i'
StandardOutput=journal

Теперь команды

systemctl --user daemon-reload
systemctl --user start tryfail
journalctl -f 

должен показать вам сбойную службу, запущенную с otheruserв качестве информации. Очевидно, User=игнорируется при тестировании с помощью --user, но это не имеет значения.

0
09.07.2019, 09:15
2 ответа

Пробовал с нижеуказанными командами awk и sed. Python работал нормально

awk-решение:

awk  '{print "CRE_ff_Nodes_abc,"$0}' filename

выход

CRE_ff_Nodes_abc,abc,Nodes.csv
CRE_ff_Nodes_abc,def,Nodes.csv
CRE_ff_Nodes_abc,ghi,Nodes.csv
CRE_ff_Nodes_abc,jkl,Nodes.csv

команда2:

sed "s/^/CRE_ff_Nodes_abc,/g" filename

выход

CRE_ff_Nodes_abc,abc,Nodes.csv
CRE_ff_Nodes_abc,def,Nodes.csv
CRE_ff_Nodes_abc,ghi,Nodes.csv
CRE_ff_Nodes_abc,jkl,Nodes.csv

питон

#!/usr/bin/python
o=open('filename','r')
for i in o:
    print "CRE_ff_Nodes_abc,{0}".format(i).strip()

выход

CRE_ff_Nodes_abc,abc,Nodes.csv
CRE_ff_Nodes_abc,def,Nodes.csv
CRE_ff_Nodes_abc,ghi,Nodes.csv
CRE_ff_Nodes_abc,jkl,Nodes.csv
-1
28.01.2020, 05:04

Мы можем создать команду csvprepend:

#!/usr/bin/gawk -f

BEGIN  { field=ARGV[1]; delete ARGV[1]; OFS=","}
       { print field,$0 }

и используйте его:

$ chmod 755 cvsprepend               # turn it in an executable command
$ cvsprepend "New field" old.csv
New Field,abc,Nodes.csv
New Field,def,Nodes.csv

детали:

  • field=ARGV[1]; delete ARGV[1]сохраняет первый аргумент командной строки. какfield
  • OFS=","задает разделитель полей вывода
  • print field,$0печатает новое поле, OFS, предыдущую запись.
0
28.01.2020, 05:04

Теги

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