Удалите все прописные буквы из конкретного столбца в файле CSV

Если вы указываете локальное имя репо, то это действительно просто использовать $_:

git clone git@github.com:npm/npm.git npm-local-dir && cd $_

Но если вы не хотите перепечатывать длинные имена, то это немного уродливо, но это можно сделать с помощью sed:

git clone git@github.com:pckujawa/pattern-rec.git && 
cd `echo $_ | sed -n -e 's/^.*\/\([^.]*\)\(.git\)*/\1/p'`

EDIT: Ну, я собирался поблагодарить Manav (комментарий ниже) за лаконичный

git clone foo/bar && cd !$:t

, но он не работает в zsh (что-то вроде , как zsh делает расширения, что заставляет его не обрабатывать первую команду, как вводимую в ! $). Я должен был посмотреть, что !$:t сделал ( Advancing in the Bash Shell | ${me:-weverever}). !$ хватает последнюю часть предыдущей команды и :t будет "Удалить все ведущие компоненты имени файла, оставив хвост". Хорошая информация, но мне бы хотелось, чтобы она работала с zsh (я пробовал noglob безуспешно).

EDIT: Вместо того, чтобы использовать sed или !$:t (что не работает в zsh, для меня в любом случае), я нашел еще две опции (одна адаптирует https://unix.stackexchange). com/users/5685/frederik-deweerdt 's answer with https://unix.stackexchange.com/users/129926/henrik-n 's comments):

git clone git@github.com:npm/npm.git && cd $(basename $_ .git)

или

git clone git@github.com:npm/npm.git && cd ${${_%%.git*}##*/}

1
02.08.2014, 00:06
3 ответа

Вы можете использовать awk:

$ awk -F',' '{sub(/[[:upper:]]+/,"",$2)}1' OFS=',' file
R1C1, 123abc, R1C3
R2C1, 456defg, R2C3
R3C1, 789hijkl, R3C3
2
27.01.2020, 23:28

если во втором поле разбросаны заглавные буквы,

awk -F ',' '{gsub(/[[:upper:]]/, X, $2)}1' OFS=, file
2
27.01.2020, 23:28

Bash в сочетании с sed :

#!/bin/bash
cnt=0;
while IFS=, read a b c; 
do 
 echo -n $a ; cnt=$[cnt+1]; 
 sed  -e 's/[^,]*,\([^,]*\).*/\1/' file | 
 sed  -e 's/\([[:upper:]]\)//g'| 
 sed  -e  $cnt'q;d'|
 tr '\n' ' ' ;
 echo  $c; 
done  < file

производит:

R1C1 123abc R1C3
R2C1 456defg R2C3
R3C1 789hijkl R3C3
-1
27.01.2020, 23:28

Теги

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