найти значение и записать его в формате длиной 12,2 символа

Я нашел этот ответ:https://askubuntu.com/questions/101029/how-do-i-mount-a-cifs-share

которые точно достигают того, что мне нужно, я просто не знал о mount.cifs .

В конце концов, вот что я сделал:

$ sudo apt install cifs-utils
$ mkdir /media/short/
$ sudo mount -t cifs -o username=yourUserName //serv.er.name/storage/ /media/short/

-6
03.04.2021, 14:22
2 ответа

окончательный рабочий раствор:

cat./${file}.tmp2.mt940 | gawk -F '/^:60F:/ or
/^:60M:/ or
/^:61:/ or
/^:62F:/ or
/^:62M:/' '{if (match($0, /^(.*)(PLN|C|D)([0-9]+),([0-9]+)$/, p)) {
    printf("%s%s%012d,%02d\n", p[1], p[2], p[3], p[4]);
  } else
print $1
}' > ${file}.mt940
0
20.10.2021, 13:34

Это бит awk вард в POSIXawk:

/^:60F:/ ||
/^:60M:/ ||
/^:61:/ ||
/^:62F:/ ||
/^:62M:/ {
  n1 = match($0, /(PLN|C|D)[0-9]+,[0-9]+$/);
  if (n1) {
    p1 = substr($0, 0, n1-1);
    r1 = substr($0, n1);
    n2 = match(r1, /[0-9]/);
    p2 = substr(r1, 0, n2-1);
    r2 = substr(r1, n2);
    n3 = index(r2, ",");
    p3 = substr(r2, 0, n3-1);
    p4 = substr(r2, n3+1);
    printf("%s%s%012d,%02d\n", p1, p2, p3, p4);
    next;
  }
}
1

Если вы можете использовать gawk, это намного лучше:

/^:60F:/ ||
/^:60M:/ ||
/^:61:/ ||
/^:62F:/ ||
/^:62M:/ {
  if (match($0, /^(.*)(PLN|C|D)([0-9]+),([0-9]+)$/, p)) {
    printf("%s%s%012d,%02d\n", p[1], p[2], p[3], p[4]);
    next;
  }
}
1
0
28.04.2021, 22:54

Теги

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