Поскольку данные представляют собой правильно отформатированные данные 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
(, и в этом случае он будет заключать двойные кавычки во все поля ).
Спасибо @Kusalananda за комментарий, я могу использовать опцию --exclude
, доступную в GNU tar:
Чтобы исключить все в любом каталоге с именем x
(, но не в самом каталоге):
tar cf a.tar --exclude='x/*' a
Чтобы исключить каталог x
и все, что под ним (, но обратите внимание, что это также исключает любые обычные файлы с именем x
):
tar cf a.tar --exclude='x' a