Найти и заменить Pipe с помощью команды awk

Проблема, с которой вы столкнулись, может быть связана с тем, что вывод находится на stderr, а не на stdout. В этом случае вы можете попробовать:

sudo forever list 2>&1 | sed 's/.*app.js [0-9]* \([0-9]*\) /\1/'

Он должен отвечать только на второй pid.

Тогда вы могли бы сделать:

sudo forever stop `sudo forever list 2>&1 | sed 's/.*app.js [0-9]* \([0-9]*\) /\1/'`
0
18.04.2019, 16:26
2 ответа

Протестировано с приведенной ниже командой awk, все работает нормально

awk -F '"' '{gsub(/\|/," ",$2);print $0}' filename

выход

col1|col2|col3|col4|col5|col6|col7|col8|col9|col10
value1|value2|value3|value4|value5|value6| value7 text |value8|value9|value10
0
28.01.2020, 02:22

Поскольку данные представляют собой правильно отформатированные данные CSV, мы можем использовать парсер CSV:

$ csvformat -d '|' file | tr '|' ' ' | csvformat -D '|'
col1|col2|col3|col4|col5|col6|col7|col8|col9|col10
value1|value2|value3|value4|value5|value6|value7 text|value8|value9|value10

При этом используется csvformatиз csvkit для переформатирования данных с разделителями|-в данные с разделителями-запятыми -. Затем trиспользуется для замены всех оставшихся символов вертикальной черты пробелами. В конце снова используется csvformatдля переформатирования данных с разделителями-запятыми -в формат с разделителями |-.

Обратите внимание, что csvformatбудет добавлять двойные кавычки к полям только в случае необходимости, или если используется -U 1(, и в этом случае он будет заключать двойные кавычки во все поля ).

3
28.01.2020, 02:22

Теги

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