grep только целые слова, начинающиеся с get_ [закрыто]

Quiere que el Nen Var1_X_Var2_Y_Var3_Z_data_N.txtsea un cero -entero de dos -dígitos.

Suponiendo que todos los archivos afectados coincidan con el patrón*_[0-9].txt:

for name in *_[0-9].txt; do
    stem="${name%.txt}"    # remove the ".txt" suffix
    num=${stem##*_}        # extract the number at the end
    newname="${stem%[0-9]}$( printf '%02d.txt' "$num" )" # put it back together

    printf 'Would rename "%s" into "%s"\n' "$name" "$newname"
    # mv -- "$name" "$newname"
done
  • ${name%.txt}elimina .txtdel final de $name, el nombre de archivo original. Esto crea la "raíz", que no es realmente la raíz ya que todavía tiene el número al final.
  • ${stem##*_}elimina todo hasta el último guión bajo incluido en $stem.
  • ${stem%[0-9]}es la raíz sin el número al final (, p.Var1_X_Var2_Y_Var3_Z_data_).
  • printf '%02d.txt' "$num"produce un número de dos dígitos -lleno de cero -de $num, seguido de la cadena .txt.

Dado un directorio con los archivos

Var1_X_Var2_Y_Var3_Z_data_1.txt              Var1_X_Var2_Y_Var3_Z_data_23.txt
Var1_X_Var2_Y_Var3_Z_data_10.txt             Var1_X_Var2_Y_Var3_Z_data_24.txt
Var1_X_Var2_Y_Var3_Z_data_11.txt             Var1_X_Var2_Y_Var3_Z_data_25.txt
Var1_X_Var2_Y_Var3_Z_data_12.txt             Var1_X_Var2_Y_Var3_Z_data_26.txt
Var1_X_Var2_Y_Var3_Z_data_13.txt             Var1_X_Var2_Y_Var3_Z_data_27.txt
Var1_X_Var2_Y_Var3_Z_data_14.txt             Var1_X_Var2_Y_Var3_Z_data_28.txt
Var1_X_Var2_Y_Var3_Z_data_15.txt             Var1_X_Var2_Y_Var3_Z_data_29.txt
Var1_X_Var2_Y_Var3_Z_data_16.txt             Var1_X_Var2_Y_Var3_Z_data_3.txt
Var1_X_Var2_Y_Var3_Z_data_17.txt             Var1_X_Var2_Y_Var3_Z_data_30.txt
Var1_X_Var2_Y_Var3_Z_data_18.txt             Var1_X_Var2_Y_Var3_Z_data_4.txt
Var1_X_Var2_Y_Var3_Z_data_19.txt             Var1_X_Var2_Y_Var3_Z_data_5.txt
Var1_X_Var2_Y_Var3_Z_data_2.txt              Var1_X_Var2_Y_Var3_Z_data_6.txt
Var1_X_Var2_Y_Var3_Z_data_20.txt             Var1_X_Var2_Y_Var3_Z_data_7.txt
Var1_X_Var2_Y_Var3_Z_data_21.txt             Var1_X_Var2_Y_Var3_Z_data_8.txt
Var1_X_Var2_Y_Var3_Z_data_22.txt             Var1_X_Var2_Y_Var3_Z_data_9.txt

.. ese bucle produciría

Would rename "Var1_X_Var2_Y_Var3_Z_data_1.txt" into "Var1_X_Var2_Y_Var3_Z_data_01.txt"
Would rename "Var1_X_Var2_Y_Var3_Z_data_2.txt" into "Var1_X_Var2_Y_Var3_Z_data_02.txt"
Would rename "Var1_X_Var2_Y_Var3_Z_data_3.txt" into "Var1_X_Var2_Y_Var3_Z_data_03.txt"
Would rename "Var1_X_Var2_Y_Var3_Z_data_4.txt" into "Var1_X_Var2_Y_Var3_Z_data_04.txt"
Would rename "Var1_X_Var2_Y_Var3_Z_data_5.txt" into "Var1_X_Var2_Y_Var3_Z_data_05.txt"
Would rename "Var1_X_Var2_Y_Var3_Z_data_6.txt" into "Var1_X_Var2_Y_Var3_Z_data_06.txt"
Would rename "Var1_X_Var2_Y_Var3_Z_data_7.txt" into "Var1_X_Var2_Y_Var3_Z_data_07.txt"
Would rename "Var1_X_Var2_Y_Var3_Z_data_8.txt" into "Var1_X_Var2_Y_Var3_Z_data_08.txt"
Would rename "Var1_X_Var2_Y_Var3_Z_data_9.txt" into "Var1_X_Var2_Y_Var3_Z_data_09.txt"

Elimine el comentario mval final del bucle para cambiar el nombre de los archivos.

0
13.09.2018, 18:22
1 ответ

Вопрос:

grep only whole word starting with get_

Ответ:

grep -P -o '\bget_.*?\b'

Пробный запуск:

==> input.txt <==
set_output_delay get_post -clock clk_i 3 [get_ports xyz]
set_clock_latency 0 [get_clocks clock] ==>get_lost<==
set_disable_timing [get_pins u_phy/enable]
$ grep -P -o '\bget_.*?\b' input.txt
get_post
get_ports
get_clocks
get_lost
get_pins
0
28.01.2020, 02:42

Теги

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