Как я Инвертирую вывод, уже переданный по каналу от вида, и сокращаю команды

[1189122]Причина, по которой yum просит ключ, заключается в том, что его нет в /etc/pki/rpm-gpg

Вы можете импортировать ключ одним из 4 способов:

use [1189940]rpm --import http://download.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6[1189941] (как предлагает slm)Установите пакет, а затем подождите подсказки (как я делал) Используйте RPM-пакет, предоставляемый epel, он устанавливает repo и ключ одновременно.

net use \\Hostname /savecred /persistent:yes

sudo yum -y install http://mirror.pnl.gov/epel/6/i386/epel-release-6-8.noarch.rpm"

Function Unicode(val As Long)
   Unicode = ChrW(val)
End Function

Скопируйте ключ вручную в нужный каталог.

Result of the user defined function

2
24.10.2014, 02:55
4 ответа

Можно попробовать

echo $VAR | tr -s " "

или

myArr=($VAL)
VAL=${myArr[@]}
echo "$VAL"

, а также проверить .

-121--7330-

Используйте расширение подстановки Bash

При использовании Bash можно использовать расширение подстановки . Например:

$ echo "${VAR//  /}"
This displays with extra spaces.
-121--7331-

Можно выполнить следующее:

awk -F: '{ print $1"   "$5 }' /etc/passwd | sort -k2

Это приведет к разбору полей имени пользователя и комментария из /etc/passwd и sort во втором поле, которое будет первым именем пользователя, при условии, что они перечислены в порядке имени и фамилии.

Вот пример включения grep :

grep "500\|501\|502" /etc/passwd | awk -F: '{ print $1"    "$5 }' | sort -k2

jira    Atlassian JIRA
dick    Richard Jameson
bob    Robert Gillespie

EDIT:

Используйте его, чтобы изменить порядок lastname, firstname из файла /etc/passwd :

awk -F: '{ print $1"   "$5 }' /etc/passwd | awk '{ print $1"    "$3" "$2 }' | sort -k2

Приведенный выше пример изменен для lastname, firstname в файле /etc/passwd :

grep "500\|501\|502" /etc/passwd | awk -F: '{ print $1"    "$5 }' |  awk '{ print $1"    "$3" "$2 }' | sort -k2

Это работает, если нет,

EDIT (второй):

Поскольку последние/первые имена разделены запятыми, это должно работать:

awk -F: /$id_prefix/'{ print $1"    "$5 }' /etc/passwd | awk -F, '{ print $1"    "$2 }' | awk '{ print $1"    "$3"    "$2 }' | sort -k2

Спасибо @ Jidder за рекомендацию не прокладывать трубопроводы от grep до awk .

1
27.01.2020, 22:22

Вы должны сделать это:

grep mohsen /etc/passwd | awk -F':' {'split($5,a,",");printf "username is :%s ,uid is: %s , name is %s \n",$1,$3,a[1]  '}

Выход:

username is :mohsen ,uid is: 1000 , name is Mohsen Pahlevanzadeh
0
27.01.2020, 22:22

Shift + Удалить удалить файлы без возможности восстановления. Для перемещения в корзину нажмите Ctrl + Delete . Чтобы отключить эту функцию безопасности в Gnome3, перейдите в скрытый каталог /home/user/.config/nautilus и отредактируйте файл accel , изменив значение

; (gtk_accel_path "<Actions>/DirViewActions/Trash" "<Primary>Delete")

на

(gtk_accel_path "<Actions>/DirViewActions/Trash" "Delete")

. Затем перезапустите nautilus, выйдя из системы и снова войдя в систему.

-121--196381-

Вот что вы можете сделать в обычном режиме, предполагая, что данные точно такие, как вы разместили. ( Предупреждение : изменяет контекстные файлы. Будьте внимательны к резервному копированию перед тестированием.)

Для управления первыми двумя файлами используется несколько функций:

next_id() {
  file="$1"
  # assumes file is sorted by id
  echo $(( $(tail -n 1 $file|cut -d, -f1) + 1 ))
}

При условии, что file1 и file2 отсортированы по столбцу id, при этом первая часть последней строки берется и увеличивается на единицу, генерируя следующий идентификатор.

find_or_create_id() {
  file="$1"
  item="$2"
  # check if we already have that item
  id=$(grep -m 1 ",$item$" "$file" 2> /dev/null)
  if [[ $? -ne 0 ]] ; then
    # generate the next id, append
    id=$(next_id "$file")
    echo "$id,$item" >> "$file"
  else
    # got it already
    id=${id/,*}
  fi
  echo "$id"
}

Выполняется поиск элемента (vname или dname) в одной из первых двух строк. Если он найден, верните существующий идентификатор. Если нет, создайте следующий идентификатор и сохраните его обратно в файл.

Основная часть довольно проста после того, как вы получили подстроки правильно:

while read line ; do
  col1=${line/,*}  # everything up to first ,
  col3=${line//*,} # everything after last ,
  col2=${line%,*}  # everything after first ,
  col2=${col2#*,}  # everything before last ,
  id1=$(find_or_create_id file1 "$col1")
  id2=$(find_or_create_id file2 "$col2")
  # don't insert duplicates
  if ! grep -m 1 -q "^$id1,$id2," file3 ; then
    echo "$id1,$id2,$col3" >> file3
  fi
done < <(tail -n +2 file4)

Это не вставить в последний файл по порядку, вы получите новые строки в конце.


При этом, если какой-либо из этих файлов является нетривиальным по размеру, база данных была бы уместной. Если сервер базы данных не требуется, обратитесь к SQLite.

Предполагая, что вас не волнуют последовательные идентификаторы (только то, что они отличаются), и вы поставили integer primary key autoincrement id для таблицы 1 и таблицы 2 (плюс уникальные ключи для vname и dname), обновление будет выглядеть как (скорее всего, есть более тонкие способы, чем вставить или игнорировать подход):

insert or ignore into tab1(vname) select distinct vname from tab4;
insert or ignore into tab2(dname) select distinct dname from tab4;

insert or ignore into tab3(id1,id2,value)
  select tab1.id, tab2.id, tab4.value
  from tab4
  left join tab1 on tab1.vname = tab4.vname
  left join tab2 on tab2.dname = tab4.dname;

SQLite может иметь дело с " в файле.

.separator ,
.import fileX tabX

делает Правильный Thing™, по крайней мере, с образцами, которые у вас есть.

Простая схема:

create table tab1 (id integer primary key autoincrement, vname text);
create unique index tab1_vname on tab1(vname);

create table tab2 (id integer primary key autoincrement, dname text);
create unique index tab2_dname on tab2(dname);

create table tab3 (id1 int, id2 int, value text,
                   constraint tab3_pk primary key(id1, id2));

create table tab4 (vname text, dname text, value text);
-121--210034-

Я думаю, что вы можете избежать чего-то подобного:

grep $id_prefix /etc/passwd | cut --delimiter: --fields=1,5 | sort --field-separator=: --key=2

Вы также можете добавить опцию --ignore-case для сортировки , если это необходимо в вашем контексте. Дополнительные сведения см. в документах .

0
27.01.2020, 22:22

Не знаю, почему люди - это трубопровод в awk.
Вы могли бы сделать все это в awk. Это предполагает, что первое и фамилия разделены пространством.
Где имя пользователя является поисковым термином

awk -F: '/USERNAME/{split($5,a," ");print $1,a[2],a[1]}' etc/passwd
0
27.01.2020, 22:22

Теги

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