Учитывая эти файлы:
cat before.txt
1
2
3
4
1
1
2
3
4
2
3
4
cat after.txt
2743
3028
2850
1092
И этот маленький скрипт:
#!/bin/bash
while read -r line; do
if [[ "$line" == 4 ]]; then
sed -n '1p' after.txt
sed -i".bup" '1d' after.txt
else
echo "$line"
fi
done < before.txt
Я получаю такой результат:
./script.sh
1
2
3
2743
1
1
2
3
3028
2
3
2850
Я уверен, что есть awk
oneliner, который может сделать это, но я не говорю awk
свободно! Также, если вы хотите заменить ("на место") файл before.txt
, вам придется изменить операторы sed
в цикле. В противном случае вы можете просто перенаправить STDOUT
в новый файл. В этом примере я решил вывести все в STDOUT
для удобства просмотра.
Проверено под OS X 10.11.6 и BSD sed