Изменить последний октет в IP awk

Существует множество способов сделать это, включая следующий (при использовании GNU xargs):

sed -e '/^[[:space:]]*$/d' -e 's/$/.txt/' fileNames.txt | xargs -rd '\n' touch --

Это предполагает, что в файле fileNames.txt есть только одно имя файла в строке. Сценарий sed удаляет пустые строки (спасибо @rubynorails) и добавляет '.txt' в конец каждого имени файла перед передачей их в xargs touch.

При использовании опции -d '\n' в xargs (расширение GNU, которое указывает xargs использовать только новую строку или '\n' в качестве разделителя, а не любые пробельные символы, и отключает обработку кавычек) это даже справляется с именами файлов, содержащими пробелы и другие потенциально проблемные символы (кроме \n или самой новой строки). Например, если строка содержит 'abet able', то без -d '\n' будет создано два файла (abet и able.txt). С ним будет создан только один файл abet able.txt.

0
25.04.2018, 16:29
3 ответа

Используйте для этого sed:

$ sed -E 's/ (([0-9]{1,3}\.){3})[0-9]{1,3} / \1x /' file
Somestring 1.2.3.x more charachters and strings
Somestring 1.2.3.x more charachters and strings
Somestring 1.2.3.x more charachters and strings

Это ищет пробел, за которым следуют три набора из[0-9]{1,3}\.(числа от одной до трех цифр, за которыми следует точка ), которая захватывается в \1. Затем мы также заменяем последний набор [0-9]{1,3}и последний пробел. Все это заменяется на ␣\1x␣, где \1— первая группа из трех чисел и точек.

1
28.01.2020, 02:25

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

awk '{sub(/\.[0-9][0-9]?[0-9]?$/,".x",$2)} 1' input
Somestring 1.2.3.x more charachters and strings
Somestring 1.2.3.x more charachters and strings
Somestring 1.2.3.x more charachters and strings

С некоторыми реализациями вы можете использовать ERE [0-9]{1,3}для повторения цифр.

1
28.01.2020, 02:25
awk '{sub(/.$/,"x",$2)}1' file

Somestring 1.2.3.x more charachters and strings
Somestring 1.2.3.x more charachters and strings
Somestring 1.2.3.x more charachters and strings
1
28.01.2020, 02:25

Теги

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