Как мне удвоить каждую строку конвейерного вывода? [дубликат]

Это совершенно разные вещи, хотя в данном случае их можно использовать для аналогичных целей.

Это:

alias appl="/Applications/path/to/bin/appl"

создает псевдоним, поэтому ввод appl в командной строке эквивалентен вводу / Applications / path / to / bin / appl .

ln -s , с другой стороны, создает символическую ссылку в файловой системе. Символьная ссылка - это ссылка на другой файл, и для большинства целей ее можно рассматривать, как если бы это был сам файл. Он применяется ко всему, что обращается к нему, а не только к оболочке, он сразу виден всем процессам, запущенным в системе, и сохраняется до тех пор, пока не будет удален. (Символьная ссылка реализована в виде небольшого специального файла, содержащего имя целевого файла.)

2
06.05.2016, 06:46
2 ответа
cat input.txt | awk '1;1' > output.txt 

edit: это менее подробная версия joepd, оригинал ниже

cat input.txt | awk '{print $0 "\n" $0}' > output.txt 
1
27.01.2020, 21:56

Просто используйте 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, будет изменен только первый экземпляр в каждой строке.)


Дальнейшее чтение (настоятельно рекомендуется) :

5
27.01.2020, 21:56

Теги

Похожие вопросы