열의 시작과 끝에 문자 추가

열의 시작과 끝에 문자 추가

다음과 같은 파일이 있습니다.

78@54@this@15@23
65@22@is@92@16
34@12@an@14@18
13@42@example@52@22

나는 이것을 다음과 같이 바꾸고 싶습니다 :

"78"@54@"this"@15@23
"65"@22@"is"@92@16
"34"@12@"an"@14@18
"13"@42@"example"@52@22

나는 오랫동안 이 문제로 어려움을 겪었고 어떻게 해야 할지 모르겠습니다. 어떤 도움이라도 대단히 감사하겠습니다. 감사합니다.

답변1

awk를 시도해 볼 수 있습니다.

echo "78@54@this@15@23
65@22@is@92@16
34@12@an@14@18
13@42@example@52@22" |
awk -F@ '{print "\""$1"\"@"$2"@\""$3"\"@"$4"@"$5}' 

"78"@54@"this"@15@23
"65"@22@"is"@92@16
"34"@12@"an"@14@18
"13"@42@"example"@52@22

답변2

조금 장황하지만 다음과 같이 작성하겠습니다.

awk -F@ -v OFS=@ '
    function quote(x) {return sprintf("\"%s\"", x)}
    {print quote($1), $2, quote($3), $4}
'

답변3

내 생각엔 하나이상한 솔루션아마도 더 좋을 수도 있지만 다음을 사용할 수도 있습니다 sed.

sed -r 's/(\d+)@(\d+)@(\w+)(.*)/"\1"@\2@"\3"\4/' /path/to/your/file

답변4

awk에서: 처음 세 필드 주위에 따옴표를 추가하고 해당 줄을 인쇄합니다.

awk -F @ '{for (i = 1; i <= 3; i++) $i = "\"" $i "\""; print}'

-F @필드 구분 기호를 로 설정합니다 @. 이 루프는 처음 세 필드 주위에 따옴표를 추가합니다. 마지막 print( 약어 print $0)은 수정된 필드가 포함된 행을 인쇄합니다. 개별 필드( , , ...)가 변경될 때마다 다시 작성됩니다 $0.$1$2

관련 정보