Как у меня это работает, я просто использую следующие псевдонимы
Это направляет файл на «emacsclient -n -c», найденный с помощью fasd.alias e='f -e "emacsclient -n -c"'
Итак, я могу набрать e exam
, чтобы открыть example.txt
в клиенте emacs.
sed -E 's/([^\t]+)\t([^\t]+)/\1-\2/g'
sed -E 's/foo/bar/g'
:запустить sed
с -E
расширенным регулярным выражением, заменив foo
на bar
, несколько раз в строке /g
. ([^\t]+)\t([^\t]+)
:соответствует не -символу табуляции [^\t]
, состоящему из одного или нескольких символов +
, и фиксирует его в группе ([^\t]+)
. Затем следует табуляция, затем символы табуляции, отличные от -, снова в другой группе захвата. \1-\2
:замените это первой группой захвата, -
, затем второй группой захвата. По сути, замените вкладку на -
. sed
является "жадным", т.е. пытается захватить как можно больше символов. Следовательно, две группы захвата будут стараться быть как можно дольше. например. он захватит все a antartica
(, заменив его наa-antartica
). При следующем запуске поиска он уже прошел antartica
, и снова начинает поиск на вкладке после этого слова. Следовательно, следующим совпадением будет 1 1
, которое будет заменено на 1-1
. Затем этот шаблон будет повторяться для каждой пары столбцов. Жадный +
важен. Если вы опустите его, шаблон просто изменит каждую вкладку.
Вот некоторые из методов, которые вы можете использовать для ввода "file.tsv":
$ perl -pe 's/\t/("-",$&)[$|--]/ge' file.tsv
Здесь мы заменяем каждую нечетную вкладку тире.
$ sed -e '
y/\t/\n/
:a;s/\n/-/;s//\t/;ta
' file.tsv
Этот код sed сначала изменит все табуляции на новые строки, а затем постепенно изменит нечетные на тире и четные на табуляции.
$ perl -lpe 's/\t(.*?(?:\t|$))/-$1/g' file.tsv
$ perl -F'\t' -lane '
push @A, join "-", splice @F,0,2 while @F;
print join "\t", splice @A;
' file.tsv
$ perl -F'\t' -nae '($,,$")=("\t", "-");
print map { "@F[2*$_,2*$_+1]" } 0..$#F/2;
' file.tsv