Удаление только первого поля из строк, где второе поле точно60
(должно работать с любым awk, а не только с GNU awk):
awk '$2 == "60" {print $1}' < file
Или с grep
иsed
:
grep -E '^[[:space:]]*[[:digit:]]+[[:space:]]+60[[:space:]]*$' < file |
sed -e 's/^[[:space:]]*//' -e 's/[[:space:]].*//'
Уродливая -подобная -подкладка в awk для общего случая, когда вам нужны строки с 60
, но исключаются именно те, которые также имеют пару72,96
:
awk 'function f(n) { return ($2 ~ "(^|,)" n "(,|$)") }
f(60) && ! (f(72) && f(96)) {print NR, $1}' < file
Функция f(n)
проверяет, находится ли n
в списке чисел во втором поле (при условии, что числа разделены запятыми или началом/концом поля ). Затем просто проверяем, что 60
присутствует, а пары 72,96
нет. Результатом является номер строки(NR
)и первое поле, но номер строки легко удалить, если он вам не нужен.
Вы можете просто использовать эти команды только в одном сеансе, каждый раз, когда вы открываете терминал, вам нужно вводить снова. Я решил свою проблему таким образом.
sudo umount /mnt/c
sudo mount -t drvfs C: /mnt/c -o metadata
chmod 400 [fileName] or chmod 700 [fileName]
Ссылка :https://stackoverflow.com/questions/46610256/chmod-wsl-bash-doesnt-work