내 파일의 입력 값 형식은 다음과 같습니다 input-prefix:value
.
input-prefix
두 번 다른 대체 항목으로 바꾸고 유사한 명령에 전달 해야 합니다 my-command replace1-prefix:value replace2-prefix:value
. 단일 명령으로 이를 달성할 수 있습니까? 아니면 스크립트를 작성해야 하나요?
값이 있는 한 매우 간단합니다.
cat my-input-file | sed 's/input-prefix/replace1-prefix/' | xargs -r my-command
TIA 도움이 필요하시면,
W.
답변1
패턴의 일부를 그룹화한 \(\)
다음 참조 할 수 있습니다 \1
(또는 \2
패턴 에 더 많은 그룹이 있는 경우).\9
s/input-prefix:\(.*\)/replace1-prefix:\1 replace2-prefix:\1/
답변2
또한 간단하고 여러 값이 있습니다. 먼저 파이프에서 cat 명령을 건너뛸 수 있습니다. sed가 파일에서 읽고 그 출력 을 STDOUT
. 명령을 실행하려면 xargs 명령에서 echo를 제거하기만 하면 됩니다. 호출되는 명령을 보려면 인수를 추가하여 명령을 보거나 명령을 대화형으로 실행할 수 있습니다. 따라서 명령을 실행하기 전에 예/아니요를 명시해야 합니다.sed
\1
-t
-p
user@pc:/tmp$ cat inputfile.txt
input-prefix1:value1
input-prefix:value
input-prefix2:value2
user@pc:/tmp$ sed 's/^input-prefix:\(.*\)$/replace1-prefix:\1\nreplace2-prefix:\1/g' inputfile.txt
input-prefix1:value1
replace1-prefix:value
replace2-prefix:value
input-prefix2:value2
user@pc:/tmp$ sed 's/^input-prefix:\(.*\)$/replace1-prefix:\1\nreplace2-prefix:\1/g' inputfile.txt | xargs -r echo my-command
간단한 설명: 입력 접두사가 교체하려는 줄의 첫 번째 항목이고 값은 콜론 뒤의 나머지 줄 모두라고 가정합니다. 또한 명령 g
의 수정자가 sed
대체됩니다.input-prefix:
inputfile.txt