다음과 같은 파일이 있습니다.
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