첫 번째 행의 첫 번째 요소에 대괄호를 추가합니다.

첫 번째 행의 첫 번째 요소에 대괄호를 추가합니다.

첫 번째 행의 첫 번째 요소인 "8" 주위에 괄호를 추가하고 싶습니다. 내 파일의 예는 다음과 같습니다.

8   089.3   96.72   61  2   0   4240    4300    2420    2360    3e-20    102
8   089.3   96.67   60  0   1   4239    4296    2419    2360    1e-18   96.9 

결과를 얻으려면 다음 명령을 사용합니다.

awk '{print "("$0")"}' file.txt1

결과는 다음과 같습니다.

(8  089.3   96.72   61  2   0   4240    4300    2420    2360    3e-20    102)
(8  089.3   96.67   60  0   1   4239    4296    2419    2360    1e-18   96.9)

아래와 같은 출력을 원합니다.

(8) 089.3   96.72   61  2   0   4240    4300    2420    2360    3e-20    102
(8) 089.3   96.67   60  0   1   4239    4296    2419    2360    1e-18   96.9

답변1

원본 파일의 필드 구분 기호가 탭(및/또는 탭으로 구분된 출력을 원함)이라고 가정하면 awk다음과 같이 사용할 수 있습니다.

awk -F '\t' -v OFS='\t' '{ $1 = sprintf("(%s)", $1) } 1' file

그러면 첫 번째 필드가 수정된 다음 수정된 필드로 재구성된 행이 출력됩니다. 마지막 1결과는 출력이 되며 교체될 수 있습니다 { print }.

귀하의 코드는 이와 비슷한 작업을 수행하지만 를 사용하면 $0다음과 같습니다.모두첫 번째 필드뿐만 아니라 행.

를 사용할 수도 있습니다 sed. 그러면 나머지 줄은 변경되지 않습니다.

sed -E 's/^([^[:blank:]]+)/(\1)/' file

이는 줄 시작 부분에서 공백이 아닌 문자열과 일치하고 이를 괄호 안의 동일한 문자열로 대체합니다.

또 다른 변형은 sed먼저 (줄의 시작 부분에 a를 삽입한 다음 )첫 번째 공백 문자 앞에 삽입하는 것입니다("공백" 문자는 공백 또는 탭을 의미함).

sed -E -e 's/^/(/' -e 's/([[:blank:]])/)\1/' file

awk솔루션은 쉽게 수정할 수 있으므로 더욱 유연합니다.어느필드이지만 sed솔루션을 사용하면 여러 공백이든 탭이든 원본 파일의 구분 기호를 유지할 수 있습니다. sed행의 첫 번째 필드를 수정하고 해당 필드를 프로그램에서 쉽게 사용할 수 있으므로(찾기 쉬움) 여기에 솔루션 만 포함합니다 sed.

관련 정보