Это совершенно разные вещи, хотя в данном случае их можно использовать для аналогичных целей.
Это:
alias appl="/Applications/path/to/bin/appl"
создает псевдоним, поэтому ввод appl
в командной строке эквивалентен вводу / Applications / path / to / bin / appl
.
ln -s
, с другой стороны, создает символическую ссылку в файловой системе. Символьная ссылка - это ссылка на другой файл, и для большинства целей ее можно рассматривать, как если бы это был сам файл. Он применяется ко всему, что обращается к нему, а не только к оболочке, он сразу виден всем процессам, запущенным в системе, и сохраняется до тех пор, пока не будет удален. (Символьная ссылка реализована в виде небольшого специального файла, содержащего имя целевого файла.)
cat input.txt | awk '1;1' > output.txt
edit: это менее подробная версия joepd, оригинал ниже
cat input.txt | awk '{print $0 "\n" $0}' > output.txt
Просто используйте sed p
.
echo foobar | sed p
Вам также не нужен cat
:
sed p input.txt
# or
sed p input.txt > output.txt
Объяснение
p
- это команда sed
для "print".
Print также действие sed
по умолчанию . Поэтому, когда вы явно указываете sed
печатать, в результате каждая строка печатается дважды .
Допустим, вы хотите напечатать только строки, содержащие слово «кумкват». Вы можете использовать -n
, чтобы подавить действие по умолчанию для sed
печати, а затем явно указать ему печатать строки, соответствующие / kumquat /
:
sed -n /kumquat/p
Или, если вы хотите напечатать только 5-ю строку и ничего больше:
sed -n 5p
Или, если вы хотите распечатать каждую строку с 15-й по 27-ю строку:
sed -n 15,17p
Если вы хотите напечатать каждую строку , кроме , которые содержат «кумкват», вы можете сделать это, просто удалив все строки кумквата, и разрешив действию по умолчанию sed
распечатать эту строку на не удаленных строках. Вам не понадобится флаг -n
или явная команда p
:
sed /kumquat/d
sed
работает по простому шаблону - синтаксису действия. В приведенных выше примерах я показал шаблоны на основе номеров строк и регулярных выражений и всего два действия (печать и удаление). sed
имеет на много больше возможностей, чем это.
Я действительно должен включить наиболее распространенную и полезную команду sed
:
sed s/apples/oranges/g
Она заменяет каждый экземпляр «яблоки» на «апельсины» и выводит результат.
(Если вы опустите лобальный флаг g
в команде s
ubstitute, будет изменен только первый экземпляр в каждой строке.)
Дальнейшее чтение (настоятельно рекомендуется) :