각 입력 줄에 대해 파이프라인을 두 배로 늘리는 방법은 무엇입니까?
예:
echo "foobar" | MYSTERY_COMMAND
푸바
푸바
답변1
그냥 사용하세요 sed p
.
echo foobar | sed p
당신은 또한 필요하지 않습니다 cat
:
sed p input.txt
# or
sed p input.txt > output.txt
설명하다
p
sed
"인쇄" 명령 입니다 .
인쇄 sed
도기본행동. 따라서 sed
명시적으로 print를 지시하면 결과는 모든 줄을 인쇄한다는 것입니다.두 배.
"kumquat"이라는 단어가 포함된 줄만 인쇄한다고 가정해 보겠습니다. to를 사용하여 기본 인쇄 작업을 -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
그러면 "apple"의 모든 인스턴스가 "orange"로 바뀌고 결과가 인쇄됩니다.
g
(대체 명령에서 전역 플래그를 생략하면 s
각 줄의 첫 번째 인스턴스만 변경됩니다.)
추가 자료(강력히 권장):
답변2
cat input.txt | awk '1;1' > output.txt
편집: 이것은 joepd의 간결한 버전이며 원본 텍스트는 다음과 같습니다.
cat input.txt | awk '{print $0 "\n" $0}' > output.txt