Ответ 1
awk '$3 ~ /snow/ { print }' dummy_file
Мой фиктивный файл выглядит так:
C1 C2 C3
1 a snow
2 b snowman
snow c sowman
Я хочу получить строку, если есть строка snow
в $3. Я могу сделать это вот так:
awk '($3=="snow" || $3=="snowman") {print}' dummy_file
Но должен быть более простой способ.
awk '$3 ~ /snow/ { print }' dummy_file
Также можно найти подстроку с функцией index():
awk '(index($3, "snow") != 0) {print}' dummy_file
Если в вашей строке есть специальные символы (например, двойная кавычка), более безопасная версия такова:
awk -v var="$var" '(index($3, var) != 0) {print}' dummy_file
Более короткие версии:
awk 'index($3, "snow")' dummy_file
awk -v var="$var" 'index($3, var)' dummy_file
Может быть, это поможет
http://www.math.utah.edu/docs/info/gawk_5.html
awk '$3 ~ /snow|snowman/' dummy_file
Печатать строки, в которых третье поле имеет только snow
или snowman
:
awk '$3~/^snow(man)?$/' file
sed '/\s*\(\S\+\s\+\)\{2\}\bsnow\(man\)\?\b/!d' file
Input:
C1 C2 C3 1 a snow 2 b snowman snow c sowman snow snow snowmanx
.. выход:
1 a snow 2 b snowman