Cat последние X символов на 14-й строке в файле - PullRequest
1 голос
/ 25 марта 2020

У меня есть файл со строкой, в которой есть VERSION : X.X.X

Я хочу вернуть на консоли только X.X.X часть строки. Во-первых, мне нужно получить строку, которую я делаю с

sed -n 14p filename.txt

Я немного растерялся относительно того, как бы я go возвратил только последние 5 символов строки, а не полной строки.

Ответы [ 3 ]

4 голосов
/ 25 марта 2020

Не могли бы вы попробовать следующее.

awk '/VERSION/{print substr($0,length($0)-4)}' Input_file

Краткое объяснение: Поиск строки со строкой VERSION, а затем использование subtr для печати подстрока длиной от 4 до последнего символа строки.

На вопрос OP, почему мы должны писать в коде length($0)-4 NOT length($0)-5: Позволяет понять это следующим образом:

VERSION : X    .   X   .   X
          ^    ^   ^   ^   ^
          |    |   |   |   |
          -4  -3  -2   -1  Last character/letter of this line(so this becomes 1 character out of 5.
That's why we need to mention -4 in length($0)-4 so that it takes value till last character).
1 голос
/ 25 марта 2020

Моя первая мысль:

  1. Обратная строка
  2. вырезать последние / первые X символов
  3. Обратная строка.

rev | cut -c-5 | rev

Но с sed вы можете заменить:

sed 's/.*\(.\{5\}\)$/\1/'
0 голосов
/ 25 марта 2020

Вы можете использовать

sed -n '14 s/VERSION *: *//p' file

См. online sed demo

С s/VERSION *: *// вы просто удалите VERSION, 0 или более пробелов , :, 0 или более пробелов.

...