Правильный способ, которым я обнаружил в Ubuntu, был sudo fuser -a -k /usr/lib/gvfs
.{{1} } Чтобы узнать больше, воспользуйтесь командой man fuser
.
Один из способов сделать это — подсчитать количество строк в начале вашего скрипта. При выводе выводите запятую в конце только в том случае, если ваш номер строки не совпадает с количеством строк. Как это сделать, объясняется здесь .
Другой подход заключается в том, чтобы не печатать запятую при выводе первой записи и печатать одну перед последующими записями. Это можно сделать следующим образом:
awk -F, '{if (!i)printf "\""$0"\"";else printf ",\n\""$0"\"";i=1}END{print ""}' a.in
Это определенно намного чище.
Есть и третий путь. Код
if(getline == 0)
читает следующую строку и, следовательно, сообщает вам, находитесь ли вы в конце файла. Это даже чище, чем описанный выше метод, но влечет за собой накладные расходы из-за двойного чтения файла, поэтому я не использую его, если только второй метод не дает сбой (, например, мне нужно обработать следующий -- -последняя строка тоже по-другому ).
Это может быть проще сделать так:
sed 's/.*/"&"/;$!s/$/,/' test_file.js | sed '/#include_code/{
r /dev/stdin
d;}' template
(при условии, что #include_code
встречается только один раз).
С помощью awk
вы можете сделать это следующим образом:
awk '
/#include_code/ {
sep = ""
while((getline < "test_file.js") > 0) {
printf "%s", sep "\"" $0 "\""
sep = ",\n"
}
if (sep) print ""
next
}
{print}' template
Вы также можете использовать подход, подобный подходу sed
выше:
CODE='test_file.js' SED='sed '\''s/.*/"&"/;$!s/$/,/'\' "$CODE"' awk '
/#include_code/{system(ENVIRON["SED"); next};{print}' template