Замена двух строк с помощью awk - PullRequest
4 голосов
/ 29 апреля 2011

Я хочу заменить @@ на ^ и ¤¤ новой строкой в ​​файле. Чтобы сделать это, я написал код ниже, но кажется, что есть более элегантное решение, чем вызов gawk дважды. Может кто-нибудь сказать мне, если есть один?

cat test.txt | gawk '{ gsub("@@", "^"); print }' | gawk '{ gsub("¤¤", "\r\n"); print }'

Ответы [ 2 ]

7 голосов
/ 29 апреля 2011

Сначала снимите кожу с cat. Это бесполезно, за исключением объединения файлов, что является его целью. Ваша awk команда будет

awk '{gsub("@@","^");gsub("¤¤","\r\n");print}' file

Если вы хотите удалить все разрывы строк перед выполнением вышеуказанного

tr -d '\r\n' <file > temp && mv temp file
2 голосов
/ 29 апреля 2011

Просто дважды вызовите gsub () перед печатью.

gawk '{gsub ("@@", "^");gsub ("¤¤", "\ r \ n");Распечатать }'

...