Проблема в разделении строки с помощью awk или команды сокращения

Необходимо установить ntfs-3g, как сказано @lgnacio.

# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-5.noarch.rpm

И установка epel repo. Можно установить ntfs-3g как

#yum install ntfs-3g

И смонтируйте диск ntfs как.

#mount -t ntfs-3g /dev/<your partition> /mnt/<mount point>
3
29.07.2013, 16:27
7 ответов
password=$(sed -n 's/^PASSWORD=//p' < "$PASSWORD.ini")
5
27.01.2020, 21:07

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

$ echo 'PASSWORD=NDhhHcsOBofXUdUzGw5B0Q==' | cut -d= -f2-
NDhhHcsOBofXUdUzGw5B0Q==

Здесь, Вы берете поля от 2-го в конец.

GNU grep с регулярными выражениями жемчуга также работал бы:

pw=$(grep -oP '^PASSWORD=\K.*' < filename)
4
27.01.2020, 21:07

Используя awk:

password=$(awk 'sub(/^PASSWORD=/,"")' < "$PASSWORD.ini")
4
27.01.2020, 21:07

Используя awk Вы не ограничены разделением на отдельных символах. Таким образом, Вы могли разделить на D= например, или даже PASSWORD=:

password=$(awk -F "D=" '{print $2}' $PASSWORD.ini)

или

password=$(awk -F "PASSWORD=" '{print $2}' $PASSWORD.ini)
2
27.01.2020, 21:07

Существует несколько хороших способов, которыми можно сделать это в awk в зависимости от конкретного подхода, который подходит Вам:

Измените свой FS:

$ echo 'PASSWORD=NDhhHcsOBofXUdUzGw5B0Q==' | awk -FPASSWORD= '{print $2;}'
NDhhHcsOBofXUdUzGw5B0Q==

Или измените свой ORS (это ДЕЙСТВИТЕЛЬНО hacky):

$ echo 'PASSWORD=NDhhHcsOBofXUdUzGS="="; ORS="=";} {for (i=2;i<NF;i++) print $i}'
NDhhHcsOBofXUdUzGw5B0Q==

Устойчивый и универсальный путь:

$ echo 'PASSWORD=NDhhHcsOBofXUdUzGw5B0Q==' | awk 'BEGIN {FS="^[^=]+=";} {print $2;}'
NDhhHcsOBofXUdUzGw5B0Q==

или (в случае парсинга> 1 строка и нахождение того, которое Вы ищете):

$ echo -e 'foo=bar\nPASSWORD=NDhhHcsOBofXUdUzGw5B0Q==\nbaz=quux\n\n' | \
  awk 'BEGIN {FS="^[^=]+=";} /^PASSWORD=/ {print $2;}'
NDhhHcsOBofXUdUzGw5B0Q==
2
27.01.2020, 21:07
  • 1
    Не отсутствует awk назвать себя из второго блока кода? –  manatwork 29.07.2013, 18:56
  • 2
    …, который обрабатывается заключительным примером. –  MikeyB 29.07.2013, 19:43
  • 3
    Ой, действительно. Извините, я пропустил это. –  manatwork 29.07.2013, 19:55

Использование Bash:

while read line ; do
  case $line in
    PASSWORD=*)
      echo "${line#PASSWORD=}" ;;
  esac
done < "$PASSWORD.ini"

${variable#text} часть разделяет text от variable.

2
27.01.2020, 21:07

И вот Perl один:

pw=$(perl -ne 'print $1 if /PASSWORD=(.+)/' "$PASSWORD.ini")
1
27.01.2020, 21:07

Теги

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