Как вывести несколько последних содержимых в строке?

в Bash или POSIX SH :

for file in *.fastq.gz; do
    mv -- "$file" "${file%%_*}_${file##*_}"
done
-2
09.06.2015, 23:29
4 ответа

Попробуйте использовать вырезание, например: вырезать -d/ -f6 файл

3
28.01.2020, 05:14

Если вы хотите использовать awk , как вы, кажется, указываете в своем вопросе, вы можете установить разделитель полей на / , а затем вывести последнее поле

awk -F/ '{print $NF}' filename
3
28.01.2020, 05:14

Я вижу, что есть некоторая двусмысленность относительно того, что именно вы хотите. Если вы хотите всего после пятой косой черты, используйте

sed -r 's|^([^/]*/){5}||;t;s|.*||' filename

Для несколько патологического, сомневающегося в допущении, вводного значения

ta=/*92/*39/*1/*649/*12
ta=/*92/*12/*4/*342/*90
foo/The/quick/brown/fox
bar/jumps/over/the/lazy/dog
/Once/upon/a/midnight/dreary
/as/I/pondered/weak/and/weary

, ограничивающего границы, это даст следующий вывод:

*12
*90

dog
dreary
and/weary

Обратите внимание, что третья строка вывода пуста, , потому что третья строка ввода содержит только четыре косой черты, , поэтому после пятой нет ничего {{1 }} (потому что там нет пятой косой черты). И шестая (последняя) строка вывода содержит / , , потому что шестая строка ввода имеет шесть косых черт, и « все после пятой косой черты »включает шестую косую черту.

0
28.01.2020, 05:14

С помощью GNU grep:

grep -o '\*[0-9]\+$' file

Вывод:

*12
*90
*3
*25
*7
2
28.01.2020, 05:14

Теги

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