#sed
Вопрос:
Ожидаемый Вклад
A B C
C A B
C C A
C A A
A A B
Ожидаемый Результат
A B C
C A B
C C B
C B B
A A B
Выход
B B C
C B B
C C B
C B B
A A B
Я пытаюсь заставить эту команду работать, но она не работает.
# '/C/s/A/B' file > newfile
sed '3,$ /C/s/A/B' file > newfile
Ответ №1:
Вы сможете использовать { ...; }
для группировки команд sed для диапазонов строк, которые вы хотите, и поставить ;
«перед }
«, поэтому убедитесь, что sed BSD/POSIX может работать с этим.
Вы можете использовать это sed
:
sed '3,$ { /C/ s/A/B/g; }' file > newfile
cat > newfile
A B C
C A B
C C B
C B B
A A B
Комментарии:
1. @SaadShamim: Это сработало?
Ответ №2:
С показанными вами образцами, пожалуйста, попробуйте выполнить следующий awk
код. Простым объяснением было бы проверить условие, если номер строки больше 3 или равен 3, А строка содержит C, затем глобально заменить все вхождения A на B и распечатать отредактированные/не отредактированные строки.
awk 'FNR>=3 amp;amp; /C/{gsub(/A/,"B")} 1' Input_file
Ответ №3:
Это может сработать для вас (GNU sed):
sed '3,$!b;/C/y/A/B/' file
Если номер строки не находится между 3 и концом файла, спасайтесь.
В противном случае для строк, содержащих C
, переведите A
» s » в B
«s».
N. B. Если A
» s » и B
» s » — истинные слова, используйте s/A/B/g
.