Невозможно разделить коды в одном файле на несколько файлов в AWK / Python
Вопрос
Мне нужно поместить разные коды в один файл для нескольких файлов. Этот файл, по всей видимости, передается создателям AWK на их домашней странице. Этот файл также здесь для удобства использования.
Моя попытка решить проблему
Я могу получить строки, в которых каждый код находится
awk '{ print $1 }'
Тем не менее, я не знаю, как
<Ол>Я уверен, что проблему можно решить с помощью AWK и Python. Возможно, нам нужно использовать их вместе. Р>
[править] после первого ответа
Я получаю следующую ошибку при попытке выполнить ее с помощью awk
$awk awkcode.txt
awk: syntax error at source line 1
context is
>>> awkcode <<< .txt
awk: bailing out at source line 1
Решение
Вы пытались:
<Ол>$ 1! = prev {close (prev); prev = $ 1} {print substr ($ 0, индекс ($ 0, ") + 1) > $ 1}
-
Удалите следующие строки из файла awkcode.txt:
# unbundle - распакуйте пакет в отдельные файлы
Ол>
- Выполните следующую команду: Ол>
$ 1! = prev {close (prev); prev = $ 1} {print substr ($ 0, индекс ($ 0, ") + 1) > $ 1}
awk -f unbundle.awk awkcode.txt
Другие советы
Вы пытаетесь распаковать файл в этом формате? Это своего рода архив оболочки. Для получения дополнительной информации см. http://en.wikipedia.org/wiki/Shar р>
Если вы запустите эту программу с помощью awk, awk создаст все эти файлы. Вам не нужно много писать или переписывать. Вы можете просто запустить эту awk-программу, и она все равно должна работать.
Сначала просмотрите файл в " plain " формат. http://dpaste.com/12282/plain/
Во-вторых, сохраните простую версию файла как 'awkcode.shar'
В-третьих, я думаю, вам нужно использовать следующую команду. Р>
awk -f awkcode.shar
<Ч>
Если вы хотите заменить его программой на Python, это будет примерно так.
import urllib2, sys
data= urllib2.urlopen( "http://dpaste.com/12282/plain/" )
currName, currFile = None, sys.stdout
for line in data:
fileName, _, text= line.strip().partition(' ')
if fileName == currName:
currFile.write(line+"\n")
else:
if currFile is not None:
currFile.close()
currName= fileName
currFile= open( currName, "w" )
if currFile is not None:
currFile.close()
Файл awk awkcode.txt не должен содержать ЛЮБОЙ пустой строки. Если встречается какая-либо пустая строка, программа awk завершается ошибкой. Нет проверки ошибок, чтобы отфильтровать пустую строку в коде. Это я мог узнать после нескольких дней борьбы. Р>