숫자로 가득 찬 파일이 있습니다.
1 6 8 9 10 11
각 숫자를 괄호로 묶고 싶으므로 기본적으로 최종 출력은 다음과 같습니다.
(1) (6) (8) (9) (10) (11)
등.
답변1
노력하다 sed
:
sed -i.bak 's/[0-9]\+/(&)/g' file.txt
이 sed
교체 에서는 [0-9]\+
연속된 숫자를 (&)
일치하는 숫자 주위의 괄호로 바꿉니다. g
이는 일치하는 모든 패턴에 대해 이 교체가 수행된다는 의미입니다. 그렇지 않으면 첫 번째 일치 패턴만 교체됩니다.
작업 후 수정된 파일은 file.txt
이고 원본 파일은 그대로 유지됩니다 file.txt.bak
. 원본 파일을 백업하는 것이 더 좋습니다. 백업하지 않으려면 다음을 사용하세요.
sed -i 's/[0-9]\+/(&)/g' file.txt
답변2
숫자만 캡처하려면 awk를 사용하십시오(빈 줄은 인쇄되지 않습니다).
awk '{for(i=1; i<=NF; i++) if($i ~ /[[:digit:]]/) $i="("$i")"} NF{print}' file
답변3
xargs printf '(%d) ' <infile
질문의 예와 같은 출력은 각각 하나 이상의 공백으로 구분된 최대 20개 정도의 숫자 시리즈에서 얻을 수 있습니다.