파이프라인 출력의 각 라인을 두 배로 늘리는 방법은 무엇입니까? [복사]

파이프라인 출력의 각 라인을 두 배로 늘리는 방법은 무엇입니까? [복사]

각 입력 줄에 대해 파이프라인을 두 배로 늘리는 방법은 무엇입니까?

예:

echo "foobar" | MYSTERY_COMMAND
푸바
푸바

답변1

그냥 사용하세요 sed p.

echo foobar | sed p

당신은 또한 필요하지 않습니다 cat:

sed p input.txt
# or
sed p input.txt > output.txt

설명하다

psed"인쇄" 명령 입니다 .

인쇄 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 

관련 정보