첫 번째 행의 첫 번째 요소인 "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
.