Как не пропустить первые две строки файла после использования sed и awk

Если вы используете такую ​​оболочку, как bash, вы можете установить параметр оболочки dotglob, чтобы подстановочный знак звездочки *соответствовал ВСЕМ файлам, а не только тем, которые не начинаются с точки .персонаж.

Для любого каталога эти три примера должны возвращать один и тот же набор файлов

пример 1
find. -mindepth 1 -maxdepth 1 -printf '%f\n'
пример 2
dg=$(shopt -q dotglob)
shopt -s dotglob
echo *
[[ $dg -eq 1 ]] && shopt -u dotglob
пример 3
( shopt -s dotglob; echo * )
0
05.08.2020, 19:51
2 ответа

Добро пожаловать на сайт, Эразмо. Вы можете значительно упростить сделку с помощью:

#!/bin/bash

file="report.csv"
sed 's/\,/;/g' "$file" > tmp.txt
file2="tmp.txt"
awk '{print $1";service"}' "$file2" > report_v2.csv

Что должно иметь tmp.txtвыход:

1;foo
2;pippo
3;pluto
4;davis

И должен иметь report_v2.csvвыход:

1;foo;service
2;pippo;service
3;pluto;service
4;davis;service
0
18.03.2021, 23:14

Вы можете просто использовать команду ниже, чтобы получить требуемый результат

awk '{gsub(",",";",$0);print $0";service"}' report.csv >> report_v2.csv

выход

1;foo;service
2;pippo;service
3;pluto;service
4;davis;service
0
18.03.2021, 23:14

Теги

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