다음 내용이 포함된 파일이 있습니다.
$ cat -n w
1 Smith John 12345 jsmith
2 Jones Robert 23456 rjones
3 Green Ralph 34567 rgreen
4 Brown Fred 45678 fbrown
5 Orange Mabel 56789 morang
각 줄을 가져온 다음 해당 줄의 끝에 해당 줄의 동일한 텍스트를 추가하고 싶습니다.
예 다음과 같은 출력을 원합니다.
$ cat -n w
1 Smith John 12345 jsmith Smith John 12345 jsmith
2 Jones Robert 23456 rjones Jones Robert 23456 rjones
3 Green Ralph 34567 rgreen Green Ralph 34567 rgreen
4 Brown Fred 45678 fbrown Brown Fred 45678 fbrown
5 Orange Mabel 56789 morange Orange Mabel 56789 morange
역참조를 사용하여 sed 명령을 조사했지만 제대로 작동하지 않습니다.
$ sed 's/(.*)/\t\1/' wider
sed: -e expression #1, char 12: invalid reference \1 on `s' command's RHS
답변1
sed
사용갈아 바수다기본적으로 \(...\)
일치 항목을 캡처하려면 이스케이프가 필요합니다.
LC_ALL=C sed 's/\(.*\)/\1\t\1/' <file
또는 다음을 사용하여 -E
활성화오히려(GNU sed 및 BSD sed에서 사용 가능하며 곧 표준이 될 예정임) 탈출할 수 없습니다 (...)
.
LC_ALL=C sed -E 's/(.*)/\1\t\1/' <file
유효하지 않은 유니코드 문자를 일치시키는 데 도움이 되도록 로케일을 설정하십시오 C
.
그러나 이것이 더 잘 작동합니다 paste
.
paste file file
또는 awk
:
awk '{printf "%s\t%s\n", $0, $0}' <file
답변2
이 시도:
sed 's/\(.*\)/\1\t\1/' <filename>
답변3
awk 사용에 반대하지 않는다면 다음 방법을 따르세요.
awk '{print $0"\t"$0}'