У меня есть следующий файл foo.txt:
1
AbcdJ
8192
Pak78
8291
Мне нужен скрипт bash, который извлекает все строки, содержащие только целые числа (например, 1, 8192, но не AbcdJ или Pak78) и выводит его to bar.txt.
Решение AWK:
$> cat input.txt
1
AbcdJ
8192
Pak78
8291
3 blind mice
$> awk '/^[[:digit:]]+$/' input.txt
1
8192
8291
Используйте > для перенаправления вывода в файл
awk '/^[[:digit:]]+$/' input.txt > output.txt
Некоторые другие инструменты:
sed:$ sed -n '/^[0-9]\+$/ p' foo.txt
1
8192
8291
bash, медленнее, чем другие подходы: $ while IFS= read -r line; do [[ $line =~ ^[0-9]+$ ]] && echo "$line"; done <foo.txt
1
8192
8291
Чтобы сохранить вывод в другом файле, используйте перенаправление вывода, >:
sed -n '/^[0-9]\+$/ p' foo.txt >output.txt
while IFS= read -r line; do [[ $line =~ ^[0-9]+$ ]] && echo "$line"; done <foo.txt >output.txt